深拷貝(遞迴方法)
阿新 • • 發佈:2019-02-15
function demo(param) {
//判斷型別
if(Object.prototype.toString.call(param)==="[object Array]"){
//是陣列就建立一個空陣列,便於存值
var obj = []
//把數組裡的元素遍歷處理
param.forEach(element => {
/*把遍歷的元素存於新陣列中, 並呼叫demo ,因為可能此陣列是二元或多次元陣列,也有可能是物件,然後再
*進行判斷型別,遍歷,知道遍歷完為止
*/
obj.push(demo(element))
})
}else if(Object.prototype.toString.call(param)==="[object Object]"){
//是物件就建立一個空物件,存放遍歷出的值
var obj = {}
for (const key in param) {
obj[key]=demo(param[key])
}
}else{
//如果既不是陣列,也不是物件,那就不用迴圈處理,直接返回就是了(字串,數值)
return param
}
return obj
}
//呼叫
var creat = demo(array)