Closed Pimm closed 1 year ago
The object implementation essentially checks whether:
a
b
Because the implementation does not check whether the property in b is its own or not, it can be fooled. Try adding this test case:
{ should: 'return false for the false king', objA: { crownWearer: true }, objB: (function createFalseKing() { var spider = { crownWearer: true } function FalseKing() { this.objective = 'world domination'; } FalseKing.prototype = spider; return new FalseKing(); })(), result: false }
A lot of time has passed, but in trying this test case today, it passes. Perhaps this was added a while ago?
Closing this out, now that it (seems to) work.
The object implementation essentially checks whether:
a
andb
have the same number of own properties, anda
equal any kind of properties inb
, including inherited ones.Because the implementation does not check whether the property in
b
is its own or not, it can be fooled. Try adding this test case: