2013-10-21 126 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