我目前在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因此,任何你在環境中做的事情(比如擴展本地原型)都不會被其他模塊反映出來 正因爲如此,最好的做法是編寫帶有輔助函數的「utils」模塊和「 「需要它的任何地方」。
//utils.js
exports.trim = function(str) {
return str.replace(/^\s+|\s+$/g,"");
};
- 伊萬Škugor
只要確定它是在任何代碼嘗試使用它之前定義的,那麼您將被設置!
你舉的例子是一個很好的使用,因爲大多數瀏覽器都有自己的裝飾方法,所以最好是來測試本機添加您自己之前:
String.prototype.trim= String.prototype.trim || function(){
return this.replace(/^\s+/, '').replace(/\s+$/, '');
}
謝謝您的回答肖恩。 但是,在這方面我應該怎麼做? – junior
如果你有一個你在各地使用的圖書館,你可以隨時把它放在那裏。我通常定義的函數可以添加到我所包含的任何庫的頂部的內置類中,以保持內容整齊。與我定義CSS文件頂部的HTML標籤的CSS屬性以及之後的classes/ids一樣。 –