js浅拷贝,深拷贝的简单实现
基础数据
var a = {
num: 1,
arr: [1, 2, 3],
undef: undefined,
nul: null,
str: 'aaa',
fun: function () {
console.log('bbb')
},
json: {
data1: [4, 5],
data2: [6, 8, 9]
}
}
// console.log(JSON.parse(JSON.stringify(a)))
浅拷贝
function simpleClone(obj) {
if (!obj) return null;
var res = obj instanceof Array ? [] : {}
for (let i in obj) {
res[i] = obj[i]
}
return res;
}
// var b = simpleClone(a)
// b.json.data1 = [4, 5, 6]
// console.log(b, a)
// var c = [1, 2, 3]
// console.log(simpleClone(c))
深拷贝
function deepClone(obj) {
if (!obj) return null;
var res = obj instanceof Array ? [] : {}
for (let i in obj) {
res[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i]
}
return res;
}
// var c = deepClone(a)
// c.json.data1 = [4, 5, 6]
// console.log(c, a)
网友评论