Ecmascript 6 余烬破坏函数

Ecmascript 6 余烬破坏函数,ecmascript-6,Ecmascript 6,我经常在Ember.js中看到使用对象销毁来检索函数的代码 const { computed } = Ember; 如果这种模式比直接调用Ember.computed更有优势,而不是减少代码?这会反对将函数封装在对象中吗?除了必须只写computed而不是Ember.computed之外,它的主要优点是computed变成了一个局部和常量变量。这可以加快紧点中的变量查找时间,而不需要搜索余烬的全局范围。它还可以防止有人通过覆盖Ember.computed来干扰您的代码,这取决于在模块中的具体位

我经常在Ember.js中看到使用对象销毁来检索函数的代码

const { computed } = Ember;

如果这种模式比直接调用Ember.computed更有优势,而不是减少代码?这会反对将函数封装在对象中吗?

除了必须只写computed而不是Ember.computed之外,它的主要优点是computed变成了一个局部和常量变量。这可以加快紧点中的变量查找时间,而不需要搜索余烬的全局范围。它还可以防止有人通过覆盖Ember.computed来干扰您的代码,这取决于在模块中的具体位置进行了分解。

这只是一种编码风格。在语义上是相同的。将这些代码移植到Ember的新模块结构可能会稍微容易一些。它与封装无关。您的意思是,将这样的代码移植到新的Ember模块结构可能会稍微容易一些。?通过封装,我的意思是如果你添加了新的js库,他们计算了全局定义的函数,这会破坏代码吗?我不知道全局定义的任何东西怎么会破坏这一点,除非重新定义了Ember,在这一点上,所有赌注都是无效的,在任何情况下,在实践中,您显示的代码前面都会有来自“Ember”的import-Ember;。那么,显示的代码前面必然会有来自“Ember”的import-Ember;,因此,不会对全球范围进行搜索。在任何情况下,Ember.computed都用于属性声明中,这些声明在编译时进行解析,不会出现在紧急情况下。如果这些原因中有任何一个是有说服力的,人们会期望许多/大多数应用程序采用这种方法,但是IRL everyone使用Ember.computed。@torazaburo是的,这是真的,我的答案不是特定于Ember的。框架可能应该为这些常用函数使用命名导出,这样您就可以从'ember'导入{computed};事实上,有一个计划以您在评论中提到的方式重新构造Ember模块/导入,该计划已经实施或即将实施,因此您将从“Ember/core”编写import{computed};或者类似的东西。