2012-04-27 73 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