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

2021-09-18 17:41:28 字數 736 閱讀 9193

(function(),clonehelper=function(cache,item)

cache.push(item, item = utils.clone(item, cache))

}return item

};window.utils=,

clone:function(obj,cache)

}());

支援節點轉殖,物件轉殖,同時也支援迴圈引用的物件轉殖。

比如:

var souceobj=

};sourceobj.childobj.child=sourceobj;

這樣乙個迴圈引用的物件也可以正常轉殖

cloneobj=utils.clone(sourceobj);轉殖後,同樣保持與原來相同的引用關係

對於var obj={};

var a={};

a.b=obj;

a.c=obj;

var d=utils.clone(a);

在clone之前

a.b.f='123';

那麼a.c也就有了乙個f 為 '123';

但對於 clone之後的d 也有這功能

然而,每段**或解決方案都有它的適用範圍,以上**也無法保證在所有瀏覽器中對任意物件轉殖均能正常工作,您應當看懂理解**,學以至用,而不是簡單的把**複製過去

以上**在opera某些版本下轉殖正則有問題,已滿足大部分需求

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

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

如何轉殖乙個json物件

定義乙個json物件 jobject job new jobject job age 13 job male context.response.write job job.tostring 輸出結果為 job jobject j clone new jobject j clone jobject j...

乙個引用物件問題

大概是這樣的乙個故事,首先看成員 謝霆鋒,張柏芝 以及他的兩個兒子,如果實體沒有實現cloneable方法,沒有呼叫clone方法,將會得到兩個不同的結果。首先看結果 錯誤的結果1 未實現實體的cloneable方法 我是第乙個孩子我的名字是lucas我爸是謝霆鋒我媽是張柏芝 我是第二個孩子我的名字...