如何优化对象写入性能?

时间:2019-08-12 22:05:37

标签: javascript performance object

如果有2个这样的对象:

let obj1 = { foo: 'bar', bar: 'foo' };
let obj2 = { foo: 'foo', bar: 'bar' };

我想将obj2的名为foo的键的值更改为其他值,例如some other value

最有效的方法是什么?

obj2.foo = 'some other value';

obj2 = { ...obj2, foo: 'some other value'};

2 个答案:

答案 0 :(得分:2)

直接分配比其他分配更快。最后一种方法涉及-根据从旧对象扩展的属性创建一个新对象,并覆盖属性值,与其他方法相比,这涉及更多操作。 https://jsperf.com/obj-perf1122

object assignment performance

答案 1 :(得分:0)

您描述的第二种方法要慢得多。通过使用传播语法,您正在将obj2的每个属性复制到一个新对象中,然后修改(覆盖)其中一个属性。如果您考虑obj2具有许多属性或存储大量信息,这将是昂贵的。

第一种方式,说obj2.foo = 'some other value',内部要做的就是获取obj2内存中的地址,跳转到foo所在的某个偏移量,然后进行更改该内存包含什么。