10

現在、Titanium StudioでJavaScript(CommonJS)を使用していますが、プロトタイピングについて質問があります。既存のクラスに新しい関数を追加したいとします。例えば:

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

このコードを追加して、すべてのクラスですぐに利用できるようにするための最も適切な場所はどこですか?

前もって感謝します。

4

3 に答える 3

12

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

「一般的にネイティブプロトタイプを拡張することはお勧めできません。この特定のケースでは、他の環境ではそれほど問題にはならないはずですが、CommonJsを使用すると、すべてのCommonJsモジュールが新しいJSコンテキストであるため、問題になります。 、クリーンなJS環境。したがって、環境で行うこと(ネイティブプロトタイプの拡張など)は他のモジュールに反映されません。そのため、ヘルパー関数を使用して「utils」モジュールを作成し、どこにでも「必要」にするのが最善です。それが必要。"

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

—IvanŠkugor

于 2012-06-28T08:37:08.307 に答える
5

コードがそれを試して使用する前に、それが定義されていることを確認してください。そうすれば、設定されます!

于 2012-06-27T17:28:51.050 に答える
5

ほとんどのブラウザには独自のトリムメソッドがあるため、使用するのに適した例です。したがって、独自のメソッドを追加する前に、ネイティブをテストすることをお勧めします。

String.prototype.trim= String.prototype.trim || function(){
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
}
于 2012-06-27T17:43:22.887 に答える