通过jquery在javascript的原型函数中使用传入构造函数的变量
我有几个div具有相同的“album”类,所以我想使用构造函数和原型创建一个类。这就是我所做的通过jquery在javascript的原型函数中使用传入构造函数的变量,javascript,jquery,oop,constructor,prototype,Javascript,Jquery,Oop,Constructor,Prototype,我有几个div具有相同的“album”类,所以我想使用构造函数和原型创建一个类。这就是我所做的 function Album(album){ this.album = album; console.log(this.album === album) console.log($(this.album) === $(album)) } Album.prototype = { init: function(){ }, loadImages: fu
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
我需要在原型中使用jquery,还有其他方法吗?谢谢
$('body') === $('body') // false
基本上,你做得对。jQuery正在和你作对
对于对象,==
运算符仅当是同一对象时才为真。在本例中,jQuery每次包装DOM元素时都会创建一个全新的对象,即使它包装的元素与前一秒相同,也会创建一个新对象
下面是一个示例,说明了为什么在纯JS中,没有jQuery:
var domEl = document.getElementById('whatev');
var a = { el: domEl };
var b = { el: domEl };
domEl === domEl // true
a === b // false
这里有两个对象,它们都有相同的数据,并且包装相同的对象。但它们是不同的对象,因此彼此之间不存在=
基本上,你做得对。jQuery正在和你作对
对于对象,==
运算符仅当是同一对象时才为真。在本例中,jQuery每次包装DOM元素时都会创建一个全新的对象,即使它包装的元素与前一秒相同,也会创建一个新对象
下面是一个示例,说明了为什么在纯JS中,没有jQuery:
var domEl = document.getElementById('whatev');
var a = { el: domEl };
var b = { el: domEl };
domEl === domEl // true
a === b // false
这里有两个对象,它们都有相同的数据,并且包装相同的对象。但是它们是不同的对象,因此彼此之间不是==
。$(this.album)。get(0)==$(album)。如果this.album===album
返回true,则get(0)
也应返回true。但是每次将DOM元素包装到jQuery符号中(使用$
)时,都会得到一个新的引用,就像下面解释的Alex Wayne一样。$(this.album)。get(0)===$(album)。get(0)
如果this.album==album
返回true,那么get(0)也应该返回true。但是每次将DOM元素包装到jQuery符号中(使用$
)时,都会得到一个新的引用,就像下面解释的Alex Wayne一样。