我目前在 Titanium Studio 中使用 JavaScript (CommonJS),并且对原型设计有疑问。假设我想向现有类添加一个新函数。例如:
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
我应该在哪里添加此代码以便它立即可用于所有课程的最合适的位置是什么?
提前致谢。
我目前在 Titanium Studio 中使用 JavaScript (CommonJS),并且对原型设计有疑问。假设我想向现有类添加一个新函数。例如:
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
我应该在哪里添加此代码以便它立即可用于所有课程的最合适的位置是什么?
提前致谢。
好的,我找到了最佳答案(Ivan Škugor),我想把它放在这里与有相同问题的人分享。谢谢你的帮助。
“一般来说扩展原生原型并不是一个好主意。在这种特殊情况下,这在其他一些环境中应该不是什么大问题,但是通过使用 CommonJs,这是一个问题,因为每个 CommonJs 模块都是新的 JS 上下文,这意味着, 干净的 JS 环境。因此,您对环境所做的任何事情(例如扩展原生原型)都不会反映在其他模块上。因此,最好是使用辅助函数编写“utils”模块并在任何地方“要求”它需要它。”
//utils.js
exports.trim = function(str) {
return str.replace(/^\s+|\s+$/g,"");
};
— 伊万·斯库戈尔
只要确保在任何代码尝试使用它之前定义它,你就会被设置!
你的例子很好用,因为大多数浏览器都有自己的 trim 方法,所以最好在添加你自己的之前测试原生:
String.prototype.trim= String.prototype.trim || function(){
return this.replace(/^\s+/, '').replace(/\s+$/, '');
}