在Ember.js中,[]和Ember.A([])之间有什么区别?

hek*_*ran 34 ember.js

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

Luk*_*lia 46

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

  • 在加载Ember之前,可以通过设置`ENV.EXTEND_PROTOTYPES = false`来禁用原型扩展.它们默认启用. (3认同)
  • 作为一个新问题可能更好,但它是:`Ember.A(new Array(6))` (3认同)
  • 另请注意,在Ember应用程序中,只要定义`myArray = []`ember,就会把它变成Ember.A()默认,除非你做`window.EXTEND_PROTOTYPES = false;`正如@JoLiss所提到的那样.http://emberjs.com/guides/configuring-ember/disabling-prototype-extensions/ (2认同)