我刚试过reopenClass()
和extend()
,但我有点惊讶地看到Em.String
坚持认为它没有这些功能。
我也试过了reopen()
,但是以同样的方式失败了。
如果我不需要,我不想使用原型,因为我想保持在 Ember方式
答案 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中。
希望有所帮助