各コンストラクターにはプロトタイプ オブジェクトがあります。プロトタイプ オブジェクトにはコンストラクターへのポインターが含まれ、インスタンスにはプロトタイプ オブジェクトの内部へのポインターが含まれます。プロトタイプ オブジェクト (1) のインスタンスを別のプロトタイプ オブジェクト (2) と等しくします。
この時点で、プロトタイプ オブジェクト (2) にはプロトタイプ オブジェクト (1) へのポインターが含まれます。
次に、プロトタイプ オブジェクト (2) のインスタンスをプロトタイプ オブジェクト (3) と等しくします。このレイヤーごとの進行により、インスタンスとプロトタイプのチェーンが形成されます。これがプロトタイプ チェーンの概念です。
プロトタイプ チェーン
各コンストラクターにはプロトタイプ オブジェクトがあり、各コンストラクター インスタンスにはプロトタイプ オブジェクトを指す内部ポインター (プロト) が含まれています。最初のコンストラクターのプロトタイプ オブジェクトが 2 番目のコンストラクターのインスタンスと等しい場合、最初のコンストラクターのプロトタイプ オブジェクトには 2 番目のプロトタイプ オブジェクトへのポインターが含まれ、3 番目のプロトタイプ オブジェクトは最初のコンストラクターのインスタンスと等しくなります。コンストラクターを作成し、最初のコンストラクターのプロトタイプ オブジェクトに 2 番目のプロトタイプ オブジェクトへのポインターが含まれるようにします。3 つのプロトタイプ オブジェクトには、最初のプロトタイプ オブジェクトへのポインターも含まれ、以下同様になります。これで、インスタンスのチェーンを形成するには十分です。プロトタイプ。これはプロトタイプ チェーンの基本概念です。
function One(){ } function Two(){ } function Three(){ } Two.prototype=new One(); Three.prototype=new Two(); var three=new Three(); console.log(three); console.log(three.__proto__===Three.prototype) //true console.log(three.__proto__.__proto__===Two.prototype) //true console.log(three.__proto__.__proto__.__proto__===One.prototype) //true console.log(three.__proto__.__proto__.__proto__.__proto__===Object.prototype) //true
オブジェクト インスタンスで、オブジェクト プロトタイプにアクセスするメソッドです。
1。proto 属性を使用します。
この属性はブラウザでサポートされている属性であり、ECMAScript
2 .Object.getPrototypeOf
3 の属性ではありません。constructor.prototype
のメソッドを使用します。 proto をサポートしていないブラウザの場合は、constructor を使用してオブジェクトのコンストラクターにアクセスし、prototype を使用してプロトタイプにアクセスできます
プロトタイプ チェーンを使用して ANUGLAR スコープを説明します
#開発中このプロセスでは、コントローラーがネストされている可能性があります。次のコードを見てください:<div ng-controller="OuterCtrl"> <span>{{a}}</span> <div ng-controller="InnerCtrl"> <span>{{a}}</span> </div> </div> <script> function OuterCtrl($scope) { $scope.a = 1; } function InnerCtrl($scope) { } </script>
以上がjsのプロトタイプチェーンとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。