moroshko / shallow-equal

Minimalistic shallow equality check for arrays/objects

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Inheritence is not handled well

Pimm opened this issue · comments

The object implementation essentially checks whether:

  • a and b have the same number of own properties, and
  • all of the own properties in a equal any kind of properties in b, 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
  }

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.