0

問題は、test.call() を使用すると、プロトタイプの呼び出し実装が呼び出されますが、test() を使用すると、call() が呼び出されないことです。テストを使用してprototype.call()をトリガーできるようにしたい。以下のコード:

            Function.prototype.call = function () {
            //do something...
            return this(); // call original method
        }

        function test() {
            alert("test");
        }

 test.call(); //calls prototype.call()
    test(); //doesnt call prototype.call()
4

2 に答える 2

2

test()を呼び出す理由は何Function.prototype.callですか? それらは異なる機能です。

上書きしているネイティブ.call()メソッドは、関数が呼び出されるたびに呼び出されるわけではありません。呼び出したときにのみ呼び出されます

呼び出し.call()は呼び出しtest()を行うように設計されているためです。コンテキスト (値) として関数を期待し、そのthis関数を呼び出します。しかし、それは.call()他の関数呼び出しと関係があるという意味ではありません。

于 2012-05-10T13:34:45.720 に答える