在哪里添加String原型

jun*_*ior 8 javascript prototype titanium

我目前正在Titanium Studio中使用JavaScript(CommonJS),并对原型设计有疑问.假设我想向现有类添加新函数.例如:

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}
Run Code Online (Sandbox Code Playgroud)

我应该添加此代码的最合适的地方是什么,所以它立即可用于所有类?

提前致谢.

jun*_*ior 11

好的,我找到了最好的答案(由IvanŠkugor提供),我想把它放在这里与谁有同样的问题分享.谢谢你的帮助.

"扩展原生原型通常不是一个好主意.在这种特殊情况下,这在其他一些环境中应该不是很大的问题,但是通过使用CommonJs,这是一个问题,因为每个CommonJs模块都是新的JS上下文,这意味着干净的JS环境.所以,你用环境做的任何事情(比如扩展原生原型)都不会反映在其他模块上.因此,最好是用辅助函数编写"utils"模块,并在任何地方"需要"它需要它."

//utils.js
exports.trim = function(str) {
    return str.replace(/^\s+|\s+$/g,"");
};
Run Code Online (Sandbox Code Playgroud)

- 伊万·斯库戈


Sea*_*son 5

只要确保在任何代码尝试使用它之前已经定义了它,您就可以设置了!


ken*_*bec 5

您的示例是一个很好用的示例,因为大多数浏览器都有自己的trim方法,因此最好在添加自己的之前测试本机:

String.prototype.trim= String.prototype.trim || function(){
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
}
Run Code Online (Sandbox Code Playgroud)