0

以下に、JavaScript で広く見られる 2 つのコード スニペットを示します。

Function.prototype.method = function (name, func) {
        this.prototype[name] = func;
        return this;
};

Number.method('integer', function () {
    return Math[this < 0 ? 'ceil' : 'floor'](this);
});

明らかにthis、2 番目のスニペットの は、拡張integerメソッドを呼び出している Number オブジェクトを表しています。this最初のスニペットの はどうですか? プロパティから、prototype拡張されているコンストラクターを表していると推測できますが、スニペットの背後にあるロジックは私にはわかりません。誰でも説明を詳しく説明できますか?ありがとう。

4

3 に答える 3

0

メソッドとして呼び出される関数内のthis値は、常にメソッドが呼び出されるオブジェクトです。では、コンストラクタNumber.method()になります。Number

次のように、他のオブジェクトでメソッドを呼び出した場合とまったく同じように動作します。

var obj = {
    someMethod : function() { 
        console.log(this);
    }
}
obj.someMethod(); // logs obj

上記の例とあなたの例の唯一の違いは、ここではメソッドがオブジェクト自体で見つかったのに対し、あなたの例ではプロトタイプチェーンを検索することで見つかったことです。

于 2013-09-26T01:55:15.890 に答える