extend (mixins, arguments) publicstatic
Creates a new subclass.
1 2 3 4 5 | App.Person = Ember.Object.extend({ say: function (thing) { alert(thing); } }); |
This defines a new subclass of Ember.Object: App.Person
. It contains one method: say()
.
You can also create a subclass from any existing class by calling its extend()
method. For example, you might want to create a subclass of Ember's built-in Ember.View
class:
1 2 3 4 | App.PersonView = Ember.View.extend({ tagName: 'li' , classNameBindings: [ 'isAdministrator' ] }); |
When defining a subclass, you can override methods but still access the implementation of your parent class by calling the special _super()
method:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | App.Person = Ember.Object.extend({ say: function (thing) { var name = this .get( 'name' ); alert(name + ' says: ' + thing); } }); App.Soldier = App.Person.extend({ say: function (thing) { this ._super(thing + ", sir!" ); }, march: function (numberOfHours) { alert( this .get( 'name' ) + ' marches for ' + numberOfHours + ' hours.' ); } }); var yehuda = App.Soldier.create({ name: "Yehuda Katz" }); yehuda.say( "Yes" ); // alerts "Yehuda Katz says: Yes, sir!" |
The create()
on line #17 creates an instance of the App.Soldier
class. The extend()
on line #8 creates a subclass of App.Person
. Any instance of the App.Person
class will not have the march()
method.
You can also pass Mixin
classes to add additional properties to the subclass.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | App.Person = Ember.Object.extend({ say: function (thing) { alert( this .get( 'name' ) + ' says: ' + thing); } }); App.SingingMixin = Mixin.create({ sing: function (thing){ alert( this .get( 'name' ) + ' sings: la la la ' + thing); } }); App.BroadwayStar = App.Person.extend(App.SingingMixin, { dance: function () { alert( this .get( 'name' ) + ' dances: tap tap tap tap ' ); } }); |
The App.BroadwayStar
class contains three methods: say()
, sing()
, and dance()
.
Parameters:
-
mixins
[Mixin]
- One or more Mixin classes
-
arguments
[Object]
- Object containing values to use within the new class
Please login to continue.