如何在没有原型的情况下扩展Ember.String?

时间:2013-05-31 10:38:57

标签: javascript ember.js

我刚试过reopenClass()extend(),但我有点惊讶地看到Em.String坚持认为它没有这些功能。

我也试过了reopen(),但是以同样的方式失败了。

如果我不需要,我不想使用原型,因为我想保持在 Ember方式

2 个答案:

答案 0 :(得分:3)

此刻,Ember在最新提交时延伸String.prototype - https://github.com/emberjs/ember.js/blob/632191f09770113cdc84ffd6e080315ab57c3f65/packages/ember-runtime/lib/ext/string.js#L21

插入String.prototype的所有功能都在那里进行了硬编码,因此向Ember.String添加任何内容 将被添加到String.prototype Ember.js ,所以唯一的方法是直接为自己添加方法。

答案 1 :(得分:2)

Ember.String只是一个带有几个效用函数的哈希,请参见https://github.com/emberjs/ember.js/blob/v1.0.0-rc.4/packages/ember-runtime/lib/system/string.js#L24。 Ember扩展了String.prototype添加这些实用功能。

我猜你除了扩展香草String.prototype之外别无他法,因为你可能需要的其他功能不是由ember提供的,你的功能将与ember一起生效。

  

取自docs的注释:   定义字符串帮助器方法,包括字符串格式化和本地化。除非Ember.EXTEND_PROTOTYPES.String为false,否则这些方法也将被添加到String.prototype中。

希望有所帮助