API Docs for: v2.11.0-beta.8
Show:

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;
}