jQuery 对象比较
jQuery objects comparison
根据jQuery文档,"并非所有jQuery对象都是创建的===。
"关于这种"包装"行为的一个重要细节是,每个包装的对象都是唯一的。即使对象是使用相同的选择器创建的,或者包含对完全相同的 DOM 元素的引用,也是如此。
文档
我知道如何解决这个问题,但为什么会这样?这是 JavaScript 的某种特定行为方式吗?
是的。JS中的每个对象都是唯一的,因为除非o1
和o2
是指向同一对象的指针,否则o1 === o2
将不成立。
{ foo: 1 } === { foo: 1 }; // false
所以jQuery对象只是遵循同样的规则:
var jq1 = $('.foo');
var jq2 = $('.foo');
jq1 === jq2; // false
唯一的例外是,如果你有变量实际指向同一个jQuery对象:
var jq3 = jq1;
jq3 === jq1; // true
相关文章:
- 使用javascript比较对象中的对象值和数组长度
- 角度深度比较对象(特定属性除外)
- 比较对象类型时是否需要第三个=
- 如何在 JavaScript 中使用 # 符号比较对象
- 使用isBetween函数比较对象中的键值
- 使用lodash比较对象并从数组中删除对象
- 按值比较对象
- 比较对象数组,最佳方式
- 比较对象中的元素
- 如何通过比较对象属性来查找列表中的对象
- JavaScript松散比较对象和字符串
- 是否有一个实用程序来深度比较对象在谷歌闭包库
- 使用Linq.js比较对象数组的每个成员
- 如何在推入数组之前比较对象
- 当比较对象时,有选择地控制角$watch的发射
- 比较对象并只获取存在于所有对象中的对象
- 为什么ava在比较对象列表和对象文本列表时失败
- 使用Lodash比较对象数组和整数数组
- 比较对象数组中的值与对象响应数组中的值
- AngularJS + Jasmine:比较对象