1

以下のコードについてお聞きしたいです

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

「関数」と新しい関数は、メソッドによって作成された関数を継承するということですか?

より明確にするために

Function.method('test', function () {return 1;});

関数またはその他の関数のメソッドとしてテストを呼び出すことができるようになりましたか?

4

2 に答える 2

2

いいえ、this関数内では、それが呼び出されたオブジェクトを参照します。この場合、それは関数、より具体的にはコンストラクター関数である必要があります。次のように使用する必要があります。

function SomeObject() {}

SomeObject.method('doSomething', function() {
    alert('Something!');
});

new SomeObject().doSomething(); // Something!
于 2012-12-24T03:41:28.473 に答える
0

JavaScript は典型的な言語です。関数がオブジェクトに対して呼び出され、見つからない場合、プロトタイプ チェーンの検索が開始されます。Objectすべてのオブジェクトの親であるでプロトタイプ チェーンが終了するまで、プロトタイプ チェーン内のすべてのオブジェクトを検索します。

すべての関数は直接的または間接的に継承しFunctionます。つまり、すべての関数は、既に作成されている関数であっても、指定された「メソッド」を持ちます。


Function.prototype.printSup = function () { console.log('sup'); }
Math.max.printSup();
String.pringSup();
'asdf'.substr.printSup()
于 2012-12-24T03:40:35.640 に答える