I have run the following lines in my console (once a jquery script has been loaded), and received the following results:
$(this)
> [Window]
$(this) != $(this)
> true
$(this) == $(this)
> false
$(this) === $(this)
> false
And I don't know what steps to take to figure out what is going on. My guess is that there is some object that holds a time based value which is changing, but I wonder if it's something different. I will try to compare the values in the meantime, but I was hoping someone might understand what is going on here.
Edited to address the point that I was unaware of the underlying implementation of $(arg). I did not know that it returned a new reference object. Therefore, I don't believe this is a duplicate of "How to determine equality for two JavaScript objects?".
Using $() returns an instance of jQuery. So, you create one instance with this, and another instance of this, you have two separate instances. Even though they share the same reference to this, the instances are not the same, and those are what is being compared.
It might help to have a visual example, and might make things a little more clear. jQuery operates like a class. So let's use an very simple example where for example's sake, the function $() doesn't exist:
class jQuery {
constructor(element) {
this.element = element;
}
}
var obj1 = new jQuery(this);
var obj2 = new jQuery(this);
console.log(obj1 === obj2); // false
Both of those are using the exact same argument (this) to create a new "jQuery" object. But, once again, obj1 is a completely different instance than obj2. They both have their own unique place in memory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With