js-数组和对象的两种复制方式

1. 数组的两种复制


//第一种
var array1 = ["1", "2", "3"];
var array2 = array1;
console.log(array2);

array1[0] = "4";
console.log(array2)
//第二种
var array1 = ["1", "2", "3"];
var array2 = [ ].concat(array1);
console.log(array2);

array1[0] = "4";
console.log(array2)

运行结果
第一种:

在这里插入图片描述

第二种:
在这里插入图片描述

concat()方法用于连接两个或多个数组,在第二种情况下concat(array1)返回的是array1的副本,而第一种情况是array1的地址,类似指针。所以第二种改变array1并不会改变array2。

2. 对象的两种复制

//第一种
var PersonOne = {name: "bob", sex: "man", age: "99"};
var PersonTwo = PersonOne;
console.log(PersonTwo);

PersonOne.age = "40";
console.log(PersonTwo)
//第二种
var PersonOne = {name: "bob", sex: "man", age: "99"};
var PersonTwo = Object.assign({}, PersonOne);
//var PersonTwo;
//Object.assign(PersonTwo, PersonOne);
//也可以
console.log(PersonTwo);

PersonOne.age = "40";
console.log(PersonTwo)

运行结果
第一种:
在这里插入图片描述

第二种:

在这里插入图片描述
Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,它将返回目标对象。这将目标对象设为{},可以做到将PersonOne的副本复制给PersonTwo

3. 思考

在这里插入图片描述

var PersonTwo = {}.concat(PersonOne);这样是不行的,因为concat()是针对数组的方法。
在这里插入图片描述

var array2 = Object.assign([], array1);这样是可行的,因为某种意义上数组也是对象的一种。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值