Hier ist eine der Fragen in JavaScript Online-Test vor Vorstellungsgespräch:Wie macht man Vergleiche von Objekten `a == b`, um wahr zu sein?
function F(){};
var a = new F();
var b = new F();
Q: Wie Vergleich a == b
zu machen true
zu sein? (Z.B. console.log(a == b) // true
)
I antwortete, dass es unmöglich ist, weil a
und b
sind zwei verschiedene Fälle von F
und gleich Vergleich in JS im Fall der Nicht-Primitiven vergleicht Referenz.
Vor einiger Zeit habe ich den Artikel "Fake operator overloading in JavaScript" von Axel Rauschmayer gelesen: http://www.2ality.com/2011/12/fake-operator-overloading.html - und ich frage mich, ob es im Vergleich zu Objekten einen Hack zu gefälschter Operatorüberladung gibt?
'JSON.stringify (a) == JSON.stringify (b)' –
@roasted, eigentlich nicht zu entfernen. In dem Thema, das Sie erwähnt haben, geht es darum, Objekte auf die richtige Art und Weise zu vergleichen. Hier ist ein anderer Fall. – jsguff
@jsguff Entschuldigung, nur gelesen Titel Ich kam zu einer voreiligen Schlussfolgerung –