ember.js
对象方法extend
和create
之间的区别是什么?
TLDR:您可以在Ember guides: classes and instances找到答案。
有时候我会在示例中看到一个,有时候看到另一个。特别是Em.Application.extend({})
和Em.Application.create({})
之间有什么区别?
如果我这样声明我的应用程序,那是什么意思?
Ember.Application.create({
MyController : Ember.ArrayController.extend({
}),
});
如何访问MyController的实例?我需要以某种方式创建它吗?我需要将一些数据输入其中。
答案 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)
从我理解的很少,用外行的术语来说,当你想要定义一个永远不会改变的属性(重新开放除外)的新对象构思时,你扩展,并且存在于所有版本中对象
当您想要处理特定个人(实例)对象时,创建。换句话说,具有将由操作或其他特定实例更改的属性的东西。
通常,您只需要在对象之间创建关系,您不需要谈论特定的单个对象,而是谈论对象的想法。因此,每次扩展时,您都不需要创建。
希望我能正确理解它。