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

File: packages/ember-runtime/lib/system/object.js

/**
@module ember
@submodule ember-runtime
*/

import { symbol } from 'ember-utils';
import { assert, on, runInDebug } from 'ember-metal';
import CoreObject from './core_object';
import Observable from '../mixins/observable';

/**
  `Ember.Object` is the main base class for all Ember objects. It is a subclass
  of `Ember.CoreObject` with the `Ember.Observable` mixin applied. For details,
  see the documentation for each of these.

  @class Object
  @namespace Ember
  @extends Ember.CoreObject
  @uses Ember.Observable
  @public
*/
const EmberObject = CoreObject.extend(Observable);
EmberObject.toString = () => 'Ember.Object';

export let FrameworkObject = EmberObject;

runInDebug(() => {
  let INIT_WAS_CALLED = symbol('INIT_WAS_CALLED');
  let ASSERT_INIT_WAS_CALLED = symbol('ASSERT_INIT_WAS_CALLED');

  FrameworkObject = EmberObject.extend({
    init() {
      this._super(...arguments);
      this[INIT_WAS_CALLED] = true;
    },

    [ASSERT_INIT_WAS_CALLED]: on('init', function() {
      assert(
        `You must call \`this._super(...arguments);\` when overriding \`init\` on a framework object. Please update ${this} to call \`this._super(...arguments);\` from \`init\`.`,
        this[INIT_WAS_CALLED]
      );
    })
  });
});

export default EmberObject;