「すべてのオブジェクトにプロトタイププロパティがある」という記述を読んだとき、誤解が生じると思います。
機能Javascriptはオブジェクトです。すべてのオブジェクトと同様に、関数にはいくつかのプロパティとメソッドがあり、長さプロパティ、プロトタイププロパティ、call()apply()メソッド、bind()メソッドなどがデフォルトで定義されています。だから、この関数はデフォルト
function myfunc(){
return "yes I'm a function";
}
//I said that function are objects having properties and methods
//this means you can call them, for example
myfunc.prototype
により、prototypeプロパティを持っており、あなたは、このプロパティを呼び出しからの戻りで持っている値がオブジェクトであることがわかります。さて、ここでは機能についてここでやめてください。
さて、あなたはnew
キーワード
var myobj = new myfunc()
と一緒に関数を呼び出し、新しいオブジェクトを作成することができますので、あなたは、コンストラクタとして任意の関数を使用することができますし、新しいオブジェクトを持つことになります。機能は、prototypeプロパティを持つオブジェクトにはありません。このオブジェクトは、私たちはオブジェクトのprototypeプロパティを話すことができないデフォルト
myobj.proptotype //=> unefined
ことではない prototypeプロパティを持っています。
しかし、それはプロパティとメソッドを継承しているから、プロトタイプオブジェクトに関連付けられた各オブジェクト。プロトタイプオブジェクトの価値を見たいですか?ソリューションの1つは
myobj.__proto__
です。カスタムオブジェクトのプロトタイプオブジェクトの値が表示されます。
myobj.__proto__
の値とmyfunc.prototype
の値を見てください。これらは同じです。これは、新しいオブジェクトのプロトタイプとして、コンストラクタのプロトタイププロパティ(つまり、新しいオブジェクトを作成するためにnew
キーワードで使用する関数のプロトタイププロパティ)が使用されることを意味します。
念頭に置いてください。
関数はオブジェクトなので、関数はデフォルトでプロパティとメソッドを持ちます。
関数にはプロトタイププロパティがあります。
関数をコンストラクタとして使用して、新しいオブジェクトを作成します。ない prototypeプロパティ持っ
オブジェクト。
オブジェクトには、プロトタイプオブジェクトがあります。
プロトタイプオブジェクトの値は、コンストラクタのプロトタイププロパティと同じです。
'.prototype'はオブジェクトなので常にそこにあります。 – zerkms
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain – Mchl
サークルは機能ですか? –