この記事を読むと、プロトタイプとプロトタイプ チェーンがとてもシンプルであることがわかります。 上記の古典的なプロトタイプチェーン等式図は、次の学習に従って簡単に習得できます。 1. プロトタイプとプロトタイプチェーンの平等関係を理解するまず、次の 2 つの概念を明確に理解する必要があります。 これら 2 つの概念を私と一緒に 3 回読んで覚えてください。後で使用します。 では、
これら 2 つの概念を私と一緒に 3 回読んで覚えてください。後で使用します。
関数 Person(名前, 年齢){ this.name = 名前; this.age = 年齢; } Person.prototype.motherland = '中国'
person01 = new Person('Xiaoming', 18); とします。 js の父は、js プロトタイプとプロトタイプ チェーンを設計する際に、次の 2 つの原則に従いました。 Person.prototype.constructor == Person // **ガイドライン 1: プロトタイプ オブジェクトのコンストラクター (つまり、Person.prototype) は、コンストラクター自体を指します** person01.__proto__ == Person.prototype // **ガイドライン 2: インスタンス (つまり person01) の __proto__ とプロトタイプ オブジェクトは同じ場所を指します** これら 2 つのルールを私と一緒に 3 回読んで覚えておいてください。これらは後で使用されます。 上記の4 つの概念と 2 つの基準を覚えておけば、どのプロトタイプ チェーンの等価性判断も正しいものになります。 概念と基準を理解したかどうかは、上の図で確認できます。必ず上の図を確認してください。 // この古典的なグラフを上から分析し始めます function Foo() function Foo() f1 = new Foo() とします。 f2 = new Foo() とします。 f1.__proto__ = Foo.prototype; // ルール2 f2.__proto__ = Foo.prototype; // ルール2 Foo.prototype.__proto__ = Object.prototype; // ルール 2 (Foo.prototype も共通オブジェクトなので、ルール 2 が適用されます) Object.prototype.__proto__ = null; // プロトタイプチェーンはここで停止します Foo.prototype.constructor = Foo; // ルール 1 Foo.__proto__ = Function.prototype; // ルール 2 Function.prototype.__proto__ = Object.prototype; // 原則 2 (Function.prototype は基本的に共通オブジェクトなので、原則 2 が適用されます) Object.prototype.__proto__ = null; // プロトタイプチェーンはここで停止します // **ここで Foo と Function の違いに注意してください。Foo は Function のインスタンスです** // この古典的なグラフの分析を真ん中から開始します Function Object() Function Object() o1 = 新しいオブジェクト(); o2 = 新しいオブジェクト(); o1.__proto__ = Object.prototype; // ルール 2 o2.__proto__ = Object.prototype; // ルール 2 Object.prototype.__proto__ = null; // プロトタイプチェーンはここで停止します Object.prototype.constructor = Object; // ルール 1 Object.__proto__ = Function.prototype // 原則 2 (オブジェクトは本質的に関数です); // これは少し混乱します。Object は本質的に関数であり、Function は本質的にオブジェクトです。Function.prototype.__proto__ = Object.prototype; // ルール 2 (Function.prototype も通常のオブジェクトなので、ルール 2 が適用されます) Object.prototype.__proto__ = null; // プロトタイプチェーンはここで停止します // 以下の Function Function() からこの古典的な図の分析を開始します Function Function() Function.__proto__ = Function.prototype // ルール 2 Function.prototype.constructor = Function; // ルール 1 このことから、 Object.prototype.__proto__ = null; Array.prototype.__proto__ = Object.prototype; Foo.prototype.__proto__ = Object.prototype; 2: プロトタイプとプロトタイプ チェーンとは何を意味しますか?
記事の冒頭にある コンソールログ(person01)
person2インスタンスを作成しましょう person02 = new Person('Xiaohua', 20); とします。 コンソールログ(person02)
Person.prototype.hairColor = 'black'; Person.prototype.eat = 関数(){ console.log('私たちは通常、1日に3食食べます。') } コンソールログ(person01) コンソールログ(person02) このとき、
person01、髪の色 = '黄色'; コンソールログ(person01) コンソールログ(person02)
JS プロトタイプ プロトタイプ チェーンの理解に関するこの記事はこれで終わりです。より関連性の高い JS プロトタイプ プロトタイプ チェーンのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL 8.0 のインデックス スキップ スキャン
>>: Linux Centos でスクリプトを使用して Docker をインストールする方法
JS には、文字列をインターセプトするための 3 つのメソッド、 slice() 、 substri...
HTML のインライン要素とブロックレベル要素の違い:標準的なドキュメント フローでは、ブロック ...
Centos7 スイッチブートカーネル注: 必要に応じて、最初にyum update -yを実行して...
目次1. マージインターフェース1.1 非関数メンバー1.2 関数メンバー序文:今日お話ししたいのは...
この記事では、マウスドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...
vue と vue-router の紹介 <script src="https://...
コンテキストの定義と目的コンテキストは、コンポーネント ツリーにプロパティを明示的に渡すことなく、コ...
MySQL では、ユーザーに付与された権限をどのように確認しますか? ユーザーに付与される権限は、グ...
目次1. 基本概念酸3.自動コミット4. トランザクション分離レベル5. 同時実行の一貫性の問題6....
FFmpeg flacをインストールする eric@ray:~$ sudo apt install ...
目次グローバル共有コンテンツファイルを作成するファイルをインポートしてグローバルに登録するページ共有...
今日私が書こうとしている内容では、プログラムは 7 時間近く実行され、データベースに 1,000 万...
前回の記事では、docker compose を使用して FastDfs ファイル サーバーをインス...
この記事では、フォーム検証を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...
OOM は「Out Of Memory」の略で、メモリオーバーフローを意味します。メモリ オーバーフ...