27

ember.js对象方法extend和对象有什么区别create

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

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

如果我这样声明我的应用程序,这意味着什么?

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

    }),
});

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

4

2 回答 2

31

死的简单答案是extend定义一个新的 JS 类,它继承自您要扩展的类,但不创建该类的实例。create创建类的一个实例。

Em.Application是一种特殊情况,因为您正在创建命名空间,而不是对象实例。我不知道你什么时候想要extend Em.Application

应用程序 = Em.Application.create(); // 我有一个新的 Em.Application 命名空间
App.A = Em.Object.extend(); // 我定义了一个新类 App.A,
                            // 继承自 Em.Object
var a = App.A.create(); // a 现在包含 App.A 的一个实例。

我建议您也阅读“命名约定”。

ETA:和“了解 Ember 对象”,正如 zaplitny 的评论中所建议的那样。

于 2012-07-25T17:00:05.190 回答
0

据我所知,用外行的话来说,当你想定义一个新的对象想法时,你会扩展,它的属性永远不会改变(重新打开除外),并且存在于这个对象的所有版本中。

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

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

希望我理解正确。

于 2012-09-04T14:47:23.443 回答