在我的Ember应用程序中,我需要操纵(排序,过滤等)大量非UI相关对象。由于它们有很多并且它们是深层嵌套的,我不会将它们声明为Ember Objects,而是将它们称为“纯粹的”Javascript(数组和{})。我不需要所有的Ember mixins。
我的应用开始变慢。仔细研究细节,这是我发现的:
在某些时候我做了一个简单的事情:
var b = $.extend(true, [], a); // a is a pure javascript object
但是当我检查b时,看起来它已经变成了Ember对象。它有一堆属性,如addArrayObserver,addBeforeObserver等。
如何防止这种情况发生?
由于
PJ
答案 0 :(得分:0)
Ember自动扩展默认的Javascript数组以添加功能,因此即使您使用[]
创建“纯”Javascript数组,也可以获得这些添加。
您可以通过在加载Ember.js之前设置配置标志来禁用这些扩展名:
window.Ember = {};
Ember.EXTEND_PROTOTYPES = false;