Oto jedno z pytań w JavaScript internetowym test przed kwalifikacyjnej:Jak sprawić, aby porównanie obiektów `a == b` było prawdziwe?
function F(){};
var a = new F();
var b = new F();
Q: Jak zrobić porównanie a == b
być true
? (Np console.log(a == b) // true
)
I odpowiedziało, że jest to niemożliwe, ponieważ a
i b
dwa różne przypadki F
i równe porównanie w JS w przypadku braku pierwotnych porównuje wartość zadaną.
Ale jakiś czas temu przeczytałem artykuł "Fake operator przeciążający w JavaScript" autorstwa Axela Rauschmayera: http://www.2ality.com/2011/12/fake-operator-overloading.html - i zastanawiam się, czy jest hack do fałszywego przeciążenia operatora w porównaniu z obiektami?
'JSON.stringify (a) == JSON.stringify (b)' –
@roasted, właściwie nie. W temacie, o którym wspomniałeś, odpowiedź polega na tym, jak dokonać właściwego porównania obiektów. Oto kolejny przypadek. – jsguff
@jsguff przepraszam, po prostu przeczytałem tytuł i doszedłem do pochopnego wniosku –