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
});
Может кто-нибудь охладить мое любопытство относительно того, почему это так?Есть ли фрагменты кода, которые это сломало бы?Есть ли какие-либо публичные дискуссии, сделанные комитетом по стандартам относительно того, почему они выбрали этот подход?