1

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

我可以 100% 确定它实际上更有益(以你能想到的所有方式)简单地做一个

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

而不是使用

Object.defineProperty

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

4

1 回答 1

3

我不会说它“更有益”,但这些在功能上是相同的:

a.p = value;

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

显然,如果您要定义许多属性,则后者更冗长,也慢(在 Chrome 中大约慢 1,000 倍):

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

于 2011-05-27T08:09:20.113 回答