首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么/什么时候需要在ember.js中重新打开类?

为什么/什么时候需要在ember.js中重新打开类?
EN

Stack Overflow用户
提问于 2013-11-14 21:28:24
回答 2查看 1.2K关注 0票数 7

有时,您在模型上使用App.Model.reopenClass() (link),而Ember指南则讨论App.Router.reopen() (link)。来自Ember指南:

“重新打开”用于添加跨类的所有实例共享的实例方法和属性。它不向类的特定实例添加方法和属性,如vanilla JavaScript (不使用prototype)。 但是,当您需要创建类方法或向类本身添加属性时,可以使用reopenClass。

什么时候这是必要的/有利的?难道就不能直接把所有的东西都加进去吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-14 22:05:20

reopenClass类似于向原型添加方法,而不是在类的每个实例上添加方法。您可以将它们看作静态变量/方法,而不是实例变量/方法。

这是一个很大的性能提升,而且对你正在解决的问题可能更有意义。

票数 3
EN

Stack Overflow用户

发布于 2013-11-14 22:03:15

要重新打开类的一个例子是,当您想要向现有的默认生成类添加属性时。例如: ember应用程序的许多实例不扩展路由器类。他们只是使用默认的路由器类。但是,如果您想要在其他地方使用的路由器类中添加一些属性,怎么办?在那里重开是很有用的。这是我能想到的一个用例。

另外,在路由器扩展类的情况下是困难的,因为成员中的大多数代码只是使用路由器类。即使您进行了扩展,一些回调/闭包仍然会引用旧的路由器类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19988775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档