__proto__ は内部プロトタイプ、prototype はコンストラクター プロトタイプ (コンストラクターは実際には関数です)
コンストラクターのプロトタイプはオブジェクトです
では、コンストラクターとは何でしょうか?
オブジェクトを作成したい場合は、PHP と同様に、最初にクラス
を作成する必要があります。
コンストラクターの本質は関数です。次の質問は、このコンストラクターを使用してオブジェクトを作成する方法です。
答え: 新しい
コンストラクターはオブジェクトを構築します。
1. すべてのコンストラクター/関数の __proto__ は、空の関数 (Empty function) である Function.prototype を指します
は、Number などはすべてコンストラクターであり、これらのコンストラクターは実際には Function のオブジェクトであると説明しています。 つまり、 var Number = new Function();
と同等です。JavaScript には合計 12 個の組み込みコンストラクター/オブジェクトがあります (JSON は ES5 で新たに追加されました)。アクセス可能なコンストラクターは 8 つです。 Global などの残りの部分には直接アクセスできません。引数は関数が呼び出されたときに JS エンジンによってのみ作成されます。Math と JSON はオブジェクトの形式で存在し、new を必要としません。それらの __proto__ は Object.prototype です。以下の通り
上記の「すべてのコンストラクター/関数」には、確かにカスタムのコンストラクター/関数が含まれています。以下の通り
これはどういう意味ですか?
ルート コンストラクターの Object や Function 自体も含め、すべてのコンストラクターは Function.prototype から取得されます。すべてのコンストラクターは Function.prototype のプロパティとメソッドを継承します。長さ、呼び出し、適用、バインドなど (ES5)。
Function.prototype は、XXX.prototype のタイプが「function」である唯一のプロトタイプでもあります。他のコンストラクターのプロトタイプはオブジェクトです。以下の通り
ああ、これが空の関数であることも上で説明しました。alert(Function.prototype) を見てみましょう。
すべてのコンストラクター (組み込みおよびカスタムを含む) の __proto__ が Function.prototype であることはわかっていますが、Function.prototype の __proto__ は誰でしょうか?
JavaScript の関数も第一級市民であることを聞いたことがあると思いますが、それをどこで示すことができますか?以下の通り
これは、すべてのコンストラクターも通常の JS オブジェクトであり、コンストラクターに対して属性を追加または削除できることを示しています。同時に、Object.prototype のすべてのメソッド (toString、valueOf、hasOwnProperty など) も継承します。
Object.prototype の __proto__ は誰ですか?
頂上に達しましたがヌルです。
JavaScript の __proto__ とプロトタイプの違いは理解できましたか? ご質問がございましたら、メッセージを残して一緒に話し合いましょう