我想使用jQuery深拷貝對象,但它無法提供完全獨立的對象。jQuery的(深)延伸bug?
這是我的代碼。
var copy = $.extend(true, {}, this);
然後,當我比較這兩個對象,我得到以下結果:
copy == this
=>假(到目前爲止好)copy.LstOptions == this.LstOptions
=>假(所以太好了)copy.LstOptions[0] == this.LstOptions[0]
=>true(問題)
LstOptions
雖然不是原始類型,但它實際上是一個對象數組。以下是它的內容:
[{"ID":22,"Name":"man"},{"ID":27,"Name":"weird"},{"ID":25,"Name":"womanii"}]
它如何得到深度複製以及如何深度複製?
PS:這裏是我的全部boject:
{"changed":false,"data":null,"LstOptions":[{"ID":22,"Name":"man"},{"ID":27,"Name":"weird"},{"ID":25,"Name":"womanii"}],"NewRecord":null,"NewID":0,"done":false}
this
也有一些方法(構造函數),沒有屬性(get/setter方法)。
這裏是一個JSFiddle https://jsfiddle.net/wk9e2kgn/1/其中console.log輸出true
我期望它輸出false
。
這是對象,而不是數組。只需使用json即可。這本身就是濫用,擴展意味着擴展原型。 – simonzack 2015-02-12 08:37:19
jQuery的文檔說:「在一個深入的擴展,對象和數組擴展,但對原始的對象包裝...」 – 2015-02-12 08:38:39
不能重現:http://jsfiddle.net/o5hbd6f3/你確定'LstOptions'包含你覺得它做什麼? (如果數組爲空,則將undefined與undefined進行比較,這是真的。) – JJJ 2015-02-12 08:43:15