簡體   English   中英

為什么新設置的屬性不在 jQuery object 上保留,但在 dom 元素上保留?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM