js物件的深層 拷貝
阿新 • • 發佈:2019-02-02
//物件的深層 拷貝 function deepCopy(src,dist){ dist = dist || {}; for(var i in src){ if(typeof src[i] == 'object'){ //這裡一定要初始化物件,不然傳遞null進去,沒有物件指標, //無法將生成的物件賦值到dist[i]上 dist[i] = (src[i].constructor === Array)?[]:{}; //遞迴執行,dist[i] 已經賦初始值 deepCopy(src[i],dist[i]); }else{ dist[i] = src[i]; } } return dist; } var demo = { name : "zhangsan", age : 12, prefer: ["吃飯","睡覺","喝水"], state:{ location:"南京", cn:"中國" } } //傳遞一個 {} 和 (null,undefined)效果是不一樣的, //傳遞的是null沒有物件指標,執行深拷貝後dist沒有賦值。 var dist = {}; var xx = deepCopy(demo,dist);