Подтвердить что ты не робот

Какая разница между ember.js расширяется и создается?

В чем разница между ember.js Методами объекта extend и create?

TL;DR: вы найдете ответ в Руководствах Ember: классы и экземпляры.

Иногда я вижу это в примерах, а иногда и в другом. В частности, какая разница между Em.Application.extend({}) и Em.Application.create({})?

Если я объявляю свое приложение таким образом, что это значит?

Ember.Application.create({
    MyController : Ember.ArrayController.extend({

    }),
});

Как я могу получить доступ к экземпляру MyController? Мне нужно каким-то образом создать его? Мне нужно вставить в него некоторые данные.

4b9b3361

Ответ 1

Покойный простой ответ заключается в том, что extend определяет новый класс JS, который наследует от расширяемого вами класса, но не создает экземпляр этого класса. create создает экземпляр класса.

Em.Application - частный случай, потому что вы создаете пространство имен, а не экземпляр объекта. Я не знаю, когда вы захотите extend Em.Application.

App = Em.Application.create(); // I have a new Em.Application namespace
App.A = Em.Object.extend(); // I have defined a new class, App.A, 
                            // which inherits from Em.Object
var a = App.A.create();  // a now contains an instance of App.A.

Я бы посоветовал вам читать "Соглашения об именах".

ETA: И Понимание объектов Ember, как это предложено в заплитном комментарии.

Ответ 2

Из того, что мало я понимаю, в условиях неспециалиста, вы расширяете, когда хотите определить идею нового объекта со свойствами, которые никогда не будут меняться (за исключением повторного открытия) и существуют во всех версиях этого объект.

Вы создаете, когда хотите работать с конкретным объектом (экземпляром). Другими словами, что-то со свойствами, которые будут изменены действиями или другими конкретными экземплярами.

Часто вам нужно создавать отношения между объектами, вам не нужно говорить об отдельных отдельных объектах, а скорее о идее объекта. Поэтому вам не нужно создавать каждый раз, когда вы расширяете.

Надеюсь, я правильно понимаю.