一、數組淺拷貝數組
var arr = ["a", "b", "c"]spa
var arr2 = arr.slice( )對象
var arr3 = arr.concat( )string
二、對象淺拷貝io
var obj1 = {a: 1, b: 2}console
var obj2 = {c: 3, d:4}function
Object.assign(obj1, obj2)
object
obj1 // {a: 1, b: 2, c: 3, d:4}
方法
三、深拷貝co
缺點:不支持方法拷貝
var obj = {
name: "aa",
age: 18,
action: function( ){}
}
var obj1 = JSON.parse(JSON.stringify(obj))
console.log(obj1) //{name: "aa", age: 18}
四、深拷貝
function deep(dest, obj){
var o = dest;
for(var key in obj){
if(typeof obj[key] === 'object'){
o[key] = (obj[key].constructor === Array) ? [ ] : { }
deep(o[key], obj[key])
} else{
o[key] = obj[key]
}
}
return o;
}