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