1. 程式人生 > >JavaScript:實現對Object型別的深克隆方法

JavaScript:實現對Object型別的深克隆方法

通過淺拷貝所克隆出來的物件指向的是同一個空間,改變一個物件的內容會影響另一個。
而深拷貝所克隆出來的完全是兩個物件,修改內容,相互不影響。

這個程式的編寫思路是:
1.遍歷物件(for(var prop in obj))
2.判斷是不是原始值 typeof() object
3.判斷是陣列還是物件 instanceof toString constructor
4.如果是物件則遞迴。

function deepkelon(origin,target) {
    var target = target || {};
    toStr = Object.prototype.
toString; arrStr = "[object Array]"; for(var prop in origin){ if(origin.hasOwnProperty(prop)){ if(origin[prop] !== null && typeof(origin[prop]) == 'object'){ target[prop] = toStr.call(origin[prop]) == arrStr? []:{}; deepkelon(origin[
prop],target[prop]); }else{ target[prop] = origin[prop]; } } } return target; }