Каков предпочтительный способ определения атрибутов свойств в ECMAScript 5? Из того, что я понимаю, есть по крайней мере два способа:Как настроить свойства в ECMAScript 5: Object.create или Object.defineProperties?
function Foo() {
Object.defineProperties(this, {
'a': {
value: "A",
writable: false
},
'b': {
value: "B",
writable: true,
enumerable: true
}
});
}
var f = new Foo();
Или:
var Foo = Object.create({}, {
'a': {
value: "A",
writable: false
},
'b': {
value: "B",
writable: true,
enumerable: true
}
});
};
var f = Object.create(Foo);
Помимо достоинств инстанцировании с new
против Object.create
, есть падение производительности при определении свойств с использованием Object.defineProperties()
как в первом примере? Являются ли эти два эквивалента? Существует ли консенсус в отношении удобочитаемости?
Там никогда не консенсус. –
Что касается производительности, это зависит от реализации и версии. Попробуй это. –
Пример вашего конструктора помещает свойства в 'f', тогда как в вашем примере' Object.create' 'f' наследует свойства. –