0

プロトタイプは、オブジェクトのインスタンスに自動的に適用されるプロパティと機能を定義する便利な手段として、JavaScript 全体で使用されます。

だから私がこれを書くと:

function Ninja(){} 
Ninja.prototype.swingSword = function(){ 
return true;
};

var ninja1 = Ninja(); 

すると、すべての忍者がメソッドを持っています。

しかし、それがインスタンス オブジェクトのみの場合、次のコードが機能するのはなぜですか?

Object.prototype.test1=function (){alert(this);};
Object.test1();

オブジェクトはプレーン オブジェクトであり、インスタンス オブジェクトではありません。

質問:

  • プロトタイプは、インスタンス以外のオブジェクトにもメソッドを適用しているようです...

私は mdn でその正確な動作の説明を見つけることができませんでした。

4

2 に答える 2

2

通常、これは機能しません。Objectプロトタイプに関数を追加し、Object関数、つまりのインスタンスでありFunction、「Function.prototype」がのインスタンスであるため、コードは機能しますObject

于 2013-10-26T16:26:41.510 に答える
1

のプロトタイプを拡張するとObject、追加したプロパティはすべての JS オブジェクトのルートであるため、すべてのオブジェクトで使用できます。

Object.prototype.test1 = function(){ console.log('test1') };
({}).test1(); // logs test1
(new Image()).test1(); // logs test1

そしてObject、すべてのコンストラクターと同様に、関数です。JavaScript の関数はオブジェクトです。

于 2013-10-26T16:26:06.300 に答える