2012-04-27 135 views
32

在浏览使用Ember.js编写的应用程序时,我注意到有时使用调用Ember.A()来定义数组,有时会使用数组文字。当我在浏览器控制台中运行Ember.A([1])时,返回值看起来就像一个数组,使用数组文字创建的数组具有Ember.js方法pushObject和朋友。当您不使用原型扩展时,拨打Ember.A()只是一种定义Ember.Array的方法吗?否则数组都是相等的?在Ember.js中,[]和Ember.A([])有什么区别?

回答

42

您的问题包含正确的答案:Ember.A()只是在您关闭原型扩展时定义Ember.Array的一种方法。您会注意到Ember的内部代码始终使用Ember.A()

+3

在加载Ember之前,可以通过设置'ENV.EXTEND_PROTOTYPES = false'来禁用原型扩展。它们默认启用。 – 2012-07-01 10:06:23

+1

你如何创建长度为6的Ember.A()? – SuperUberDuper 2015-02-02 15:56:13

+2

可能更适合作为一个新问题,但它是:'Ember.A(new Array(6))' – 2015-02-03 20:21:17