js中object对象的复制与引用

let obj={name:“111”};
obj没有真正的储存这个对象,而是储存了该对象的内存地址;
因此当我们重新赋值并修改属性的值,会影响obj中的属性值(也会随之改变):

例子:
let obj={name:"111"};
let obj1=obj;
obj1.name="22";
console.log(obj)  //{name: '22'}

为解决上述问题,有两种方法:
例子:``

let user = {
  name: "John",
  age: 30
};

let clone = {}; // 新的空对象

// 将 user 中所有的属性拷贝到其中
for (let key in user) {
  clone[key] = user[key];
}

// 现在 clone 是带有相同内容的完全独立的对象
clone.name = "Pete"; // 改变了其中的数据

alert( user.name ); // 原来的对象中的 name 属性依然是 John


//我们也可以使用 Object.assign 方法来达成同样的效果。

```javascript
let user = {
  name: "John",
  age: 30
};

let clone = Object.assign({}, user);

上诉都为基本的obj结构,也有obj={name:xxx,obj1:{aa:111}},这种结构就需要深拷贝才能解决上诉问题,如下:

var objects = [{ 'a': 1 }, { 'b': 2 }];
 
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
// => false```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值