ember.js - ember hasblock




ember.js扩展和创建之间有什么区别? (2)

ember.js之间有什么区别对象方法extendcreate

TLDR:您将在Ember指南中找到答案:类和实例

有时候我会在示例中看到一个,有时候看到另一个。 特别是, Em.Application.extend({})Em.Application.create({})之间有什么区别?

如果我这样宣布我的应用程序,这是什么意思?

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

    }),
});

如何访问MyController的实例? 我需要以某种方式创建它吗? 我需要将一些数据推入其中。


从我理解的东西开始,用外行的术语来说,当你想要定义一个永远不会改变的属性(重新打开除外)的新对象构思时,你会扩展 ,并且存在于该对象的所有版本中。

您希望使用特定个体(实例)对象时创建。 换句话说,具有将由操作或其他特定实例更改的属性的东西。

通常,您只需要在对象之间创建关系,您不需要谈论特定的单个对象,而是谈论对象的想法。 因此,每次扩展时都不需要创建

希望我能正确理解它。


简单的回答是, 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:和“ here ”一样,正如zaplitny的评论中所建议的那样。