如果我想给变量a
一个属性P
(非访问器属性)和,我不在乎它是否可配置/可枚举/可写。
我可以100%确信,事实上(在你能想到的所有方面)简单地进行更有益
a.P=value // or
a["P"]=value
而不是使用
Object.defineProperty
因此,基本上,我们不应该接触Object.defineProperty
,除非我们需要创建访问器和/或我们想控制属性的可配置/可写/可枚举状态?
我不会说它"更有益",但它们在功能上是相同的:
a.p = value;
Object.defineProperty(a, 'p', {
enumerable : true,
writable : true,
configurable : true,
value : value
});
显然,后者要详细得多,如果你定义了许多属性,那么慢得多(在Chrome中大约慢1000倍):
http://jsperf.com/setting-object-properties