gpt4 book ai didi

javascript - 在 JavaScript 中克隆对象的解耦版本

转载 作者:太空宇宙 更新时间:2023-11-04 16:14:53 33 4
gpt4 key购买 nike

我正在尝试克隆和对象,然后对原始对象进行更改并进行一些测试,以防测试失败将克隆恢复回来。

目前我已经尝试过_.clone(下划线)、angular.extendangular.mergeangular.copy Object.createObject.assignJSON.parse(JSON.stringify(o)),但不知何故我的改变原始对象中的内容会反射回克隆中。

最佳答案

您可以使用 Object.assign 在普通 JavaScript 中浅复制对象。

// Shallow copy an object in vanilla JS
let oldObj = {
name: 'Joe',
favColor: 'Green',
}

// Shallow copy oldObj to the newObj using assign
var newObj = Object.assign({}, oldObj);

// Changes made to the new object are not reflected in the new object
newObj.favFood = 'pizza';
console.log(oldObj.favFood); // undefined

要执行“深层复制”,您可以使用JSON.parse(JSON.stringify(a))

let oldObj = {
name: 'Joe',
favColor: 'Green',
favPizza: {
cheese: true,
pepperoni: false,
},
};

// Deep copy an object using JSON.parse(JSON.stringify(a))
let newObj = JSON.parse(JSON.stringify(oldObj));

// Changes made to the new object are not reflected in the new object
newObj.favPizza.sausage = true;
console.log(oldObj.favPizza.sausage); //undefined

引用:

关于javascript - 在 JavaScript 中克隆对象的解耦版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41154532/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com