2013-10-21 158 views
0

根據jQuery文檔,「並非所有的jQuery對象都創建了===」。jQuery對象比較

包裝「對此一個重要的細節‘’行爲是每個包裝的對象是獨一無二的。即使對象是使用相同的選擇創建或包含完全相同的DOM元素的引用這是真的。」

documentation

我知道如何解決這一點,但爲什麼是這樣的情況?這是JavaScript的一些特定方式嗎?

回答

4

是的。 JS中的每個對象都是唯一的,因爲o1 === o2不會成立,除非o1o2是指向同一對象的指針。

{ foo: 1 } === { foo: 1 }; // false 

所以jQuery的對象只是遵循同樣的規則:

var jq1 = $('.foo'); 
var jq2 = $('.foo'); 
jq1 === jq2; // false 

唯一的例外是,如果你有,實際上指向同一個jQuery對象變量:

var jq3 = jq1; 
jq3 === jq1; // true