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

时间:2012-07-25 16:41:45

标签: ember.js

ember.js对象方法extendcreate之间的区别是什么?

TLDR:您可以在Ember guides: classes and instances找到答案。

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

如果我这样声明我的应用程序,那是什么意思?

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

    }),
});

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

2 个答案:

答案 0 :(得分:31)

死的简单答案是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.

我建议您也阅读“Naming Conventions”。

ETA:和“Understanding Ember Objects”一样,正如zaplitny的评论所示。

答案 1 :(得分:0)

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

当您想要处理特定个人(实例)对象时,创建。换句话说,具有将由操作或其他特定实例更改的属性的东西。

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

希望我能正确理解它。