[英]Why doesn't the newly set property persist on jQuery object but it persists on the dom element?
elem
是 id 为 dummy 的 dom 元素。 jElem
是 jquery object 包裹在elem
上。
obj1
具有init
方法,该方法在传递给它的参数上设置属性。 在这里,它创建了一个新的属性prop
并将其设置为true
。 obj2
在其init
方法中也传递了相同的参数。 obj2
还具有showProp
方法,该方法打印在传递的参数上设置的属性。 以下是代码:
let elem = document.querySelector("#dummy"); let obj1 = { init(item){ item.prop = true; } }; let obj2 = { init(item){ this.item = item; }, showProp(){ console.log(this.item.prop); } }; obj1.init($(elem)); obj2.init($(elem)); obj2.showProp(); //undefined obj1.init(elem); obj2.init(elem); obj2.showProp(); //true
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="dummy">dummy</div>
我担心的是:当jElem
在两个对象中都传递时, jElem 上的属性不会持久化。 但是当 dom 元素本身传递时( elem
),该属性仍然存在。 这是为什么?
我很抱歉造成误解。 我真的很傻。 我没有睡觉,也无法正确调试。 问题是我正在编写如下代码:
let elem = document.querySelector("#dummy");
let obj1 = {
init(item){
item.prop = true;
}
};
let obj2 = {
init(item){
this.item = item;
},
showProp(){
console.log(this.item.prop);
}
};
obj1.init($(elem));
obj2.init($(elem));
obj2.showProp(); //undefined
obj1.init(elem);
obj2.init(elem);
obj2.showProp(); //true
这显然符合预期,因为我在传递给 function 时创建了一个新的 jQuery object: obj1.init($(elem))
和obj2.init($(elem));
. 在这里,显然两个init
方法都传递了 2 个不同的对象,而不是同一个 object。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.