通过jquery在javascript的原型函数中使用传入构造函数的变量

通过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

我有几个div具有相同的“album”类,所以我想使用构造函数和原型创建一个类。这就是我所做的

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一样。