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

标签 javascript jquery oop constructor prototype

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

相关文章:

javascript - SVG 向圆环图添加径向渐变

javascript - 连续运行 jQuery 动画

javascript - 插件 Jquery Validation 的错误信息没有正确显示

javascript - 根据下拉选择显示 div

javascript - 在多个元素中重用脚本

javascript - 自定义自由文本工具

javascript - 将谷歌日历 API 集成到 React hooks

oop 实例化 pythonic 实践

c++ - new Object() 和 Object() 有什么区别

java - 有一个空方法可以吗?