我想使用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