ES5 добавил количество методы на Object
, которые, кажется, нарушают семантическую согласованность JavaScript.
Например, до этого расширения JavaScript API всегда вращался вокруг работы на с самим объектом;
var arrayLength = [].length;
var firstPosInString = "foo".indexOf("o");
... где как новые методы объекта;
var obj = { };
Object.defineProperty(obj, {
value: 'a',
writable: false
});
... когда следующее было бы гораздо более конформным:
var obj = { };
obj.defineProperty({
value: 'a',
writable: false
});
Может ли кто-нибудь охладить мое любопытство относительно того, почему это так? Есть ли фрагменты кода, которые это сломает? Ведутся ли комитетом по стандартам публичные обсуждения того, почему они выбрали такой подход?