js笔记 深拷贝/浅拷贝

浅拷贝

数组:


1. slice

 // 简单数据
 let arr1 = [1, 42, 5, 6]
 let arr2 = arr1.slice()
 arr2[0] = 100
 console.log(arr1) // [1, 42, 5, 6]
 console.log(arr2) // [100, 42, 5, 6]

 let arr1 = [{name: 'jack'}, 42, 5, 6]
 let arr2 = arr1.slice()
 arr2[0].name = '不同的name'
 console.log(arr1) // [{name: '不同的name''}, 42, 5, 6]
 console.log(arr2) // [{name: '不同的name'}, 42, 5, 6]

2. ES6中的...

let arr5 = [0, 0, 1]
let arr6 = [...arr5]
arr5[0] = 10000
console.log(arr5) // [10000, 0, 1]
console.log(arr6) // [0, 0, 1]
let arr5 = [{name: 'jack'}, 0, 1]
let arr6 = [...arr5]
arr5[0].name = '不同的name'
console.log(arr5) // [{name:'不同的name'}, 0, 1]
console.log(arr6) // [{name: '不同的name'}, 0, 1]

3. Array.from

let arr7 = [1, 2, 3]
let arr8 = Array.from(arr7)
arr7[1] = 1000
console.log(arr7) // [1, 1000, 3]
console.log(arr8) // [1, 2, 3]
let arr7 = [1, {name:'jack'}, 3]
let arr8 = Array.from(arr7)
arr7[1].name = '不同的name'
console.log(arr7) // [1, {name: '不同的name'}, 3]
console.log(arr8) // [1, {name: '不同的name'}, 3]

对象

1. Object.assign

 let person = {
     name: 'xia',
     age: 25,
     height: 160
 }
 let otherPerson = Object.assign({}, person)
 person.age = 30

 console.log(person)
 console.log(otherPerson)


深拷贝

1. JSON.parse(JSON.stringify(obj))

var deepObj= JSON.parse(JSON.stringify(obj))

2. 第三方库:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值