variable.Property =“test”vs Object.defineProperty(变量,“Property”)

时间:2011-05-27 08:03:45

标签: javascript ecmascript-5

如果我想给变量a一个属性P(非访问属性)我不在乎它是否可配置/可枚举/可写。

我可以100%确定它实际上更有益(在所有方面你都能想到)只需做一个

a.P=value     // or
a["P"]=value

而不是使用

Object.defineProperty

基本上,除非我们需要创建访问器和/或我们想要控制属性的可配置/可写/可枚举状态,否则我们不应该触及Object.defineProperty

1 个答案:

答案 0 :(得分:3)

我不会说它“更有益”,但这些功能完全相同:

a.p = value;

Object.defineProperty(a, 'p', {
    enumerable   : true,
    writable     : true,
    configurable : true,
    value        : value
});

如果您定义了许多属性,显然后者更冗长, 更慢(Chrome大约慢1000倍):

http://jsperf.com/setting-object-properties