#

API Docs for: v2.11.1
Show: Inherited Protected Private Deprecated

# File: packages/ember-runtime/lib/is-equal.js

    /**
      Compares two objects, returning true if they are equal.

      ```javascript
      Ember.isEqual('hello', 'hello');                   // true
      Ember.isEqual(1, 2);                               // false
      ```

      `isEqual` is a more specific comparison than a triple equal comparison.
      It will call the `isEqual` instance method on the objects being
      compared, allowing finer control over when objects should be considered
      equal to each other.

      ```javascript
      let Person = Ember.Object.extend({
        isEqual(other) { return this.ssn == other.ssn; }
      });

      let personA = Person.create({name: 'Muhammad Ali', ssn: '123-45-6789'});
      let personB = Person.create({name: 'Cassius Clay', ssn: '123-45-6789'});

      Ember.isEqual(personA, personB); // true
      ```

      Due to the expense of array comparisons, collections will never be equal to
      each other even if each of their items are equal to each other.

      ```javascript
      Ember.isEqual([4, 2], [4, 2]);                     // false
      ```

      @method isEqual
      @for Ember
      @param {Object} a first object to compare
      @param {Object} b second object to compare
      @return {Boolean}
      @public
    */
    export default function isEqual(a, b) {
      if (a && typeof a.isEqual === 'function') {
        return a.isEqual(b);
      }

      if (a instanceof Date && b instanceof Date) {
        return a.getTime() === b.getTime();
      }

      return a === b;
    }