0

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

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的专辑变量,所以我必须将它存储在this.album中。但是我不明白为什么 console.log(this.album === album) 是真的但是 console.log($(this.album) === $(album)) 是假的

我需要在原型中使用 jquery,还有其他方法吗?谢谢。

4

1 回答 1

3
$('body') === $('body') // false

基本上,你做对了。jQuery 正在惹你生气。

对于对象,===运算符仅当它是同一个对象时才为真。在这种情况下,jQuery 每次包装 DOM 元素时都会创建一个全新的对象,即使它包装的是与前一秒相同的元素,也会创建一个新对象。

这是一个示例,说明为什么这是在没有 jQuery 的普通 JS 中:

var domEl = document.getElementById('whatev');
var a = { el: domEl };
var b = { el: domEl };

domEl === domEl // true
a === b         // false

这里有 2 个对象,它们都具有相同的数据并包装相同的对象。但它们是不同的对象,因此===彼此不同。

于 2012-11-07T01:54:02.680 回答