js のプロトタイプとプロトタイプ チェーンは次のとおりです: 1. プロトタイプ パターンは、パフォーマンスを確保しながら繰り返しオブジェクトを作成するために使用されます。このタイプのデザイン パターンは、オブジェクトを作成する方法を提供する作成パターンです。方法; 2. プロトタイプ チェーンは、プロトタイプ オブジェクトの作成プロセスの履歴記録であり、オブジェクトの特定の属性にアクセスするとき、最初にオブジェクト自体の属性を検索します。
関連する無料学習の推奨事項: javascript (ビデオ)
js のプロトタイプとプロトタイプ チェーンは次のとおりです:
JavaScript は、ソフトウェアにおけるプロトタイプ ベースの言語です。デザインパターンにはプロトタイプパターンと呼ばれるパターンがあり、JavaScriptはこのパターンを利用して作成されました
プロトタイプパターンは、パフォーマンスを確保しながら繰り返しオブジェクトを作成するために使用されます。オブジェクトを作成する最適な方法を提供する作成パターン。このパターンは、現在のオブジェクトのクローンを作成するために使用されるプロトタイプ インターフェイスを実装します。プロトタイプ パターンの目的は、プロトタイプ インスタンスを使用して、作成するオブジェクトのタイプを指定し、これらのプロトタイプをコピーして新しいオブジェクトを作成することです。つまり、既存のプロトタイプ オブジェクトを使用して、新しいオブジェクト インスタンスを迅速に生成できます。プロトタイプ オブジェクトと同じです
プロトタイプ: コピー (またはクローン) できるクラス。プロトタイプをコピーすることで、まったく同じ新しいオブジェクトを作成できます。また、次のようにも言えます。プロトタイプはテンプレートであり、設計言語ではより正確です。これはオブジェクト テンプレートであると言われます
1) プロトタイプは、いくつかのパブリック プロパティとメソッドを定義します。新しいオブジェクト インスタンスが作成されます。プロトタイプを使用すると、プロトタイプのすべてのプロパティとメソッドが共有されます
コード例:
// 创建原型 var Person = function(name){ this.name = name; }; // 原型的方法 Person.prototype.sayHello = function(){ console.log(this.name+",hello"); }; // 实例化创建新的原型对象,新的原型对象会共享原型的属性和方法 var person1 = new Person("zhangsan"); var person2 = new Person("lisi"); // zhangsan,hello person1.sayHello(); // lisi,hello person2.sayHello();
2) 厳密モードでも、プロトタイプのプロパティとメソッドはプロトタイプ インスタンスによって共有されます。
コード例:
// 开启严格模式,原型的属性和方法还是会被原型实例所共享的 "use strict"; // 创建原型 var Person = function(name){ this.name = name; }; // 原型的方法 Person.prototype.sayHello = function(){ console.log(this.name+",hello"); }; // 实例化创建新的原型对象,新的原型对象会共享原型的属性和方法 var person1 = new Person("zhangsan"); var person2 = new Person("lisi"); // zhangsan,hello person1.sayHello(); // lisi,hello person2.sayHello();
3) 合格 プロトタイプによって作成された新しいオブジェクト インスタンスは互いに独立しています。新しいオブジェクト インスタンスに追加されたメソッドのみがこのメソッドを持ち、他のインスタンスは持ちます。このメソッドはありません。
インスタンス コード:
// 创建原型 var Person = function(name){ this.name = name; }; // 原型的方法 Person.prototype.sayHello = function(){ console.log(this.name+",hello"); }; // 实例化创建新的原型对象,新的原型对象会共享原型的属性和方法 var person1 = new Person("zhangsan"); var person2 = new Person("lisi"); // zhangsan,hello person1.sayHello(); // lisi,hello person2.sayHello(); // 为新对象实例添加方法 // 通过原型创建的新对象实例是相互独立的 person1.getName = function(){ console.log(this.name); } // zhangsan person1.getName(); // Uncaught TypeError: person2.getName is not a function person2.getName();
4) プロトタイプの概要:
すべての参照型には __proto__## があります。 # (暗黙のプロトタイプ) 属性、および属性値は通常のオブジェクトです
__proto__ 属性はその構造を指します 関数のプロトタイプ
##7) プロトタイプ オブジェクトのプロトタイプと関数の関係
##説明:
person1.constructor == person
10) プロトタイプ オブジェクト (person.prototype) はコンストラクター (person) のインスタンスです
prototype
属性が付けられます。プロトタイプを表示する機能は、プロトタイプ ベースの継承と属性を実装することです。共有12) プロトタイプの使用方法:
##
1) プロトタイプ チェーン: プロトタイプ チェーンは、プロトタイプ オブジェクトの作成プロセスの履歴記録です。オブジェクトの属性にアクセスするとき、最初にオブジェクト自体の属性を検索します。見つからない場合は、 __proto_ に移動し、暗黙のプロトタイプ、つまりコンストラクターのプロトタイプを検索します。まだ見つからない場合は、コンストラクターのプロトタイプの __proto__
で検索されます。式の構造
2) プロトタイピングの問題: オブジェクトのプロパティを探すとき、JavaScript は、プロトタイプ チェーンに従ってオブジェクトのプロトタイプを上向きにたどって、プロトタイプチェーンの先頭に到達するまで、指定された名前のプロパティを追加し、指定された属性が見つからない場合は undefined が返されます
プロトタイプチェーンの継承時に属性を検索するプロセスであることも理解できます最初に独自の属性を検索します。独自の属性が存在しない場合は、プロトタイプ チェーンで段階的に検索されます
3) hasOwnProperty 関数: オブジェクト自体にオブジェクトが含まれているかどうかを確認するために使用できます。特定の属性。戻り値はブール値です。属性が存在しない場合、オブジェクト プロトタイプ チェーンは上方向に検索されません。JavaScript でそれを処理する唯一のプロパティは hasOwnProperty です。プロトタイプ チェーンを検索しない関数
4) getOwnPropertyNames 関数: オブジェクト自体のすべてのプロパティを取得できます。戻り値は、オブジェクト自身のプロパティ名で構成される配列です。また、オブジェクト プロトタイプ チェーン内で上方向の検索は行いません
# 5) プロトタイプ チェーンの概要: Object.prototype .__proto__ === null
以上がjsのプロトタイプとプロトタイプチェーンとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。