在jQuery中,为什么$(this)== $(this)返回false



我已经在控制台中运行以下行(一旦加载了jQuery脚本),并收到了以下结果:

$(this)
> [Window]
$(this) != $(this)
> true
$(this) == $(this)
> false
$(this) === $(this)
> false

我不知道要弄清楚发生了什么步骤。我的猜测是,有些对象具有基于时间的价值,但我想知道这是否有所不同。在此期间,我将尝试比较这些值,但我希望有人可以理解这里发生了什么。

编辑是为了解决我不知道$(arg)的基本实施的观点。我不知道它返回了一个新的参考对象。因此,我不认为这是"如何确定两个JavaScript对象的平等?"。

使用$()返回JQuery的实例。因此,您可以使用this创建一个实例,而this的另一个实例,您有两个单独的实例。即使他们共享对this的相同引用,这些实例也不相同,而这些是所比较的。


有一个视觉示例可能会有所帮助,并且可能会使事情更加清楚。jQuery像一堂课一样运作。因此,让我们使用非常简单的示例例如,例如,函数$()不存在:

class jQuery {
    constructor(element) {
        this.element = element;
    }
}
var obj1 = new jQuery(this);
var obj2 = new jQuery(this);
console.log(obj1 === obj2); // false

这两个都使用完全相同的参数(this)来创建一个新的" jQuery"对象。但是,再次,OBJ1与OBJ2完全不同。他们俩在记忆中都有自己独特的位置。

最新更新