一種在JS中實現物件深度轉殖的方法

2021-10-08 16:18:18 字數 806 閱讀 7935

面試中經常被問到js中的深度轉殖, 在寫**中也會用到物件的深度轉殖這個需求.

請大家不嗇賜教.

現有乙個源物件 sourceobj 供拷貝, 如下:

const sourceobj =

, bank3:}}

, sayhi:

function

(op)

}

該函式傳入source物件, 返回乙個clone後的新物件

function

deepclone

(origin, target)

,//判斷是否為引用資料型別

tostr = object.prototype.tostring,

arrtype =

'[object array]'

;for

(let key in origin)

else;}

deepclone

(origin[key]

, tar[key]);

}else}}

return tar;

}

現在將遞迴函式進行校驗

console.

log(

"轉殖後的新物件為"

,deepclone

(sourceobj)

)deepclone

(sourceobj)

.more.bank.

sayhi2()

// "我是sayhi2函式"

[完]

js 物件轉殖的三種方式

js 物件轉殖把原來物件的屬性遍歷一遍,賦給乙個新的物件 深複製物件方法 var cloneobj function obj if obj instanceof array for var key in obj return newobj 測試 var obj b 設定乙個物件 newobj clo...

js中複製乙個物件方法(轉殖物件)

js中複製乙個物件方法 轉殖物件 平時我們針對物件,還有其他基本型別常常使用複製,對於 這種物件,複製之後的只是多了乙個引用,實際上還是指向原物件。1.使用將轉化為json字串,然後再轉回去。存在的問題 似乎對於複雜的會出問題,比如物件裡面存在物件,就會出問題。2.遞迴物件來轉殖,存在的問題 如果有...

js轉殖乙個物件,支援迴圈引用的轉殖

function clonehelper function cache,item cache.push item,item utils.clone item,cache return item window.utils clone function obj,cache 支援節點轉殖,物件轉殖,同時也...