我有几个具有相同“专辑”类的 div,所以我想使用构造函数和原型(prototype)创建一个类。这就是我所做的
function Album(album){
this.album = album;
console.log(this.album === album)
console.log($(this.album) === $(album))
}
Album.prototype = {
init: function(){
},
loadImages: function(){
}
};
$('.album').each(function(){
var album = new Album(this);
});
我需要访问在 init 函数中传递给 Album 类的 album 变量,因此我必须将其存储在 this.album 中。但我不明白为什么 console.log(this.album === album) 是 true 但是 console.log($(this.album) === $(album)) 为 false
我需要在原型(prototype)中使用jquery,还有其他方法吗?谢谢。
最佳答案
$('body') === $('body') // false
基本上,你做得对。 jQuery 正在搞砸你。
对于对象,===
运算符仅当它是同一对象时才为 true。在这种情况下,jQuery 每次包装 DOM 元素时都会创建一个全新的对象,即使它包装的是与前一秒相同的元素,也会创建一个新对象。
这里是一个例子,说明为什么这是在纯 JS 中,没有 jQuery:
var domEl = document.getElementById('whatev');
var a = { el: domEl };
var b = { el: domEl };
domEl === domEl // true
a === b // false
这里有 2 个对象,两者都有相同的数据并包装相同的对象。但它们是不同的对象,因此彼此不===
。
关于javascript - 在 javascript 和 jquery 中使用原型(prototype)函数中构造函数中传递的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13262137/