Skip to content

Latest commit

 

History

History
54 lines (25 loc) · 675 Bytes

js.拷贝.md

File metadata and controls

54 lines (25 loc) · 675 Bytes

JS 中的深拷贝与浅拷贝

浅拷贝:拷贝已存在的非对象属性的值和对象属性的引用

var o = { a:1, b: { x:1 } }



var a = ["1", "2", { x: 1 }]



var aC = Array.prototype.slice.call(a)



a[2].x = 3



console.log(a)

console.debug(aC)



// 同时改变


数组的浅拷贝: Array.prototype.slice.call() 、Array.prototype.concat

深拷贝:

// 利用JSON序列化实现一个深拷贝

function deepClone(source){
    return JSON.parse(JSON.stringify(source));
}

缺点:

1、无法拷贝方法

Written with StackEdit.