变量属性=“;测试”;vs Object.defineProperty(变量,“Property”)

variable.Property = "test" vs Object.defineProperty(variable,"Property")

本文关键字:变量 Property defineProperty Object 测试 属性 vs      更新时间:2023-09-26

如果我想给变量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