gpt4 book ai didi

javascript - 在 javascript 和 jquery 中使用原型(prototype)函数中构造函数中传递的变量

转载 作者:行者123 更新时间:2023-11-28 20:47:05 25 4
gpt4 key购买 nike

我有几个具有相同“专辑”类的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com