2012-06-27 16 views
7

私は現在Titanium StudioでJavaScript(CommonJS)を使用していますが、プロトタイプ作成については質問があります。 既存のクラスに新しい関数を追加したいとします。たとえば、どこに追加するか弦プロトタイプ

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

このコードを追加する必要がある場所はどこですか。すぐにすべてのクラスで利用できるようになりましたか?

ありがとうございます。

答えて

8

、私は最良の答えを見つけました(IvanŠkugorによる)、私は同じ質問を持っている人と分かち合うためにここに置いておきたい。ご協力いただきありがとうございます。

"一般的なネイティブプロトタイプを拡張するのは良い考えではありません。この特定のケースでは、他の環境では問題はありませんが、CommonJsを使用することで問題になります。 そのため、ヘルパー関数と "utils"モジュールを記述するのが最善の方法ですが、これは "あなたが必要とするところならどこでもそれを必要とします。

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

- イワンŠkugorあなたの答えショーンため

4

どのコードを試して使用しようとする前に定義されていることを確認すると、設定されます!ほとんどのブラウザは、独自のトリムメソッドを持っているので、

+0

感謝。 しかし、どのように/どこでこれを行うべきであるかに関する条約はありませんか? – junior

+0

あなたがどこで使っているライブラリがあれば、いつでもそこに置くことができます。私は通常、物事をすっきりと整理するために、私が含めているライブラリの先頭にある組み込みクラスに追加する関数を定義します。 CSSファイルの上部にHTMLタグのCSS属性を定義したのと同じように、そして後にクラス/ IDを定義するのと同じです。 –

5

あなたの例では、使用するために良いものですので、それはあなた自身を追加する前にネイティブをテストするのが最善です:OK

String.prototype.trim= String.prototype.trim || function(){ 
    return this.replace(/^\s+/, '').replace(/\s+$/, ''); 
} 
関連する問題