相关疑难解决方法(0)

在JavaScript中深度克隆对象的最有效方法是什么?

克隆JavaScript对象的最有效方法是什么?我已经看到obj = eval(uneval(o));被使用,但这是非标准的,只有Firefox支持.

我做过类似的事情,obj = JSON.parse(JSON.stringify(o));但质疑效率.

我也看到了具有各种缺陷的递归复制功能.
我很惊讶没有规范的解决方案.

javascript clone object

5181
推荐指数
48
解决办法
189万
查看次数

使用Spread运算符的对象复制实际上是浅还是深?

我理解传播运算符制作对象的浅拷贝,即克隆对象引用与原始对象相同的引用。但实际行为似乎矛盾和混乱。

const oldObj = {a: {b: 10}};

const newObj = {...oldObj};

oldObj.a.b = 2;
newObj  //{a: {b: 2}}
oldObj  //{a: {b: 2}}
Run Code Online (Sandbox Code Playgroud)

上述行为是有道理的,newObj 也通过更新 oldObj 来更新,因为它们引用相同的位置。

const oldWeirdObj = {a:5,b:3};

const newWeirdObj = {...oldWeirdObj};

oldWeirdObj.a=2;
oldWeirdObj      //{a:2,b:3}
newWeirdObj   //{a:5,b:3}
Run Code Online (Sandbox Code Playgroud)

我不明白,为什么 newWeirdObj 没有像 oldWeirdObj 那样更新?如果我没有错,他们仍然指的是同一个位置,但为什么更新到 oldWeirdObj 而不更新 newWeirdObj ?

javascript json

10
推荐指数
2
解决办法
3390
查看次数

标签 统计

javascript ×2

clone ×1

json ×1

object ×1