5

私はこれが嫌われていることを知っています.私はちょうどアイデアを模索していました.

例はすべてを説明する必要があります:

String.prototype.MyNS = function() {}
String.prototype.MyNS.fooify = function() {
     return this + 'foo!';
 }

var theString = 'Kung';

alert(theString.MyNS.fooify());

もちろん、これは関数定義を「foo」に追加するだけです...代わりに this() を追加しても機能しません。

私はそこで文脈を失ったことを理解していますが、オリジナルを発火させて欲しいものを私に与える方法を理解できません. </p>

4

2 に答える 2

7

これがあなたがそれをすることができる1つの方法です:

String.prototype.MyNS = function() {
    var _this = this;
    return {
        fooify: function() {
            return _this + 'foo!';
        }
    };
}

jsFiddleで実際の動作を確認してください

slashingweaponが指摘しているように、次のように呼び出す必要があることに注意してください。

String.prototype.MyNS().fooify();

MyNS私の知る限り、関数として呼び出すことなくそれを行うクロスブラウザーの方法はありません。

于 2012-10-03T20:32:08.023 に答える
1

functionに新しい(classoo用語で)を追加しString prototypeていますが、実際のStringインスタンスにはアクセスできません。

プロパティをプロトタイプに直接追加するだけです:

String.prototype.fooify = function() {
   return this + 'foo!';
}
var theString = 'Kung';
alert(theString.fooify());
于 2012-10-03T20:35:43.183 に答える