Object.defineProperty 的调用后/运行时性能影响



如果在脚本的加载阶段,许多属性是使用 Object.defineProperty、Object.defineProperties 或 Object.create 定义的。大多数描述符要么是不可写的(如果不是访问器(,要么是不可配置的,要么是不可枚举的,要么是组合的。相对于常规赋值或对象初始化,被动性能差异(如果有(和访问目标属性的性能差异是什么?

我听说定义不可写和/或

不可配置的属性涉及设置保护以防止写入和/或重新定义将是性能损失的原因之一,这是真的吗?

定义示例:

Object.defineProperty(window, 'foo', {
    configurable: false,
    enumerable: false,
    writable: false,
    value: 10
});

使用 Object.defineProperty/defineProperties 创建属性肯定比简单地分配它们慢。(多少钱?取决于。量!使基准具有相关性的最佳方法是使它们与您感兴趣的实际用例尽可能相似。理想情况下,您测量实际生产代码的不同版本。

无论属性是如何定义的,读取属性的速度都相同。

写入现有属性必须始终检查可写性,正是因为它无法知道是否使用了foo.bar = bazObject.defineProperty(foo, "bar", {value: baz})。所以这也是相同的速度。

没有特别的警卫。

最新更新