为什么/何时需要重新打开ember.js中的类?

有时候在模型(链接App.Model.reopenClass()上使用App.Model.reopenClass() ,并且Ember指南讨论App.Router.reopen() (链接)。 从Ember指南:

重新打开用于添加在类的所有实例之间共享的实例方法和属性。 它不像vanilla JavaScript那样向类的特定实例添加方法和属性(不使用原型)。

但是当你需要创建类方法或向类本身添加属性时,你可以使用reopenClass。

这是必要的还是有利的? 事先不能添加所有东西吗?


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

这是一个主要的性能增益,并且可能对您正在解决的问题更有意义。


您将重新打开一个类的一个示例是,当您要将属性添加到现有的默认生成的类时。 例如:许多实例的应用程序不会扩展路由器类。 他们只使用默认的路由器类。 但是如果你想添加一些属性到你想在其他地方使用的路由器类。 重新打开在那里非常有用。 这是我能想到的一个用例。

此外,在路由器扩展类的情况下,由于大多数在烬内的代码只是使用路由器类,所以很困难。 即使你扩展了,一些回调/关闭仍然会引用旧的路由器类。

链接地址: http://www.djcxy.com/p/75563.html

上一篇: Why/when do you need to reopen classes in ember.js?

下一篇: knit .rmd file to .md and save the .md file one level up with a different name