Inheritence is not handled well
Pimm opened this issue · comments
Pimm "de Chinchilla" Hogeling commented
The object implementation essentially checks whether:
a
andb
have the same number of own properties, and- all of the own properties in
a
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:
{
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
}
Philip Su commented
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.