この記事を読むと、プロトタイプとプロトタイプ チェーンがとてもシンプルであることがわかります。 上記の古典的なプロトタイプチェーン等式図は、次の学習に従って簡単に習得できます。 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 をインストールする方法
目次導入スクロール要素.スクロール()要素.scrollHeight/scrollWidth要素.s...
この記事では、例を使用して MySQL のロック メカニズムと使用方法を説明します。ご参考までに、詳...
1. 関連する技術的なポイントバイト版ヴュー3 ts統合ルーティングvuexを統合するAxiosを統...
前提条件: content="width=750" <meta name=...
1. golang:最新のベースイメージ mkdir gotest タッチメイン.go Docker...
目次1. JavaScriptはHTMLでキャンバスを使用する2. ページストレージ技術1. Jav...
CSS を使用してすべての子要素を再帰的に選択するにはどうすればよいですか?以下の記事では、CSS ...
この記事では、CSS 画像アニメーション効果(フォトフレーム)のサンプルコードを紹介し、皆さんと共有...
vue は、ページ上の div ボックスのドラッグ アンド ドロップ ソート機能を実装します。 序文...
コードをコピーコードは次のとおりです。 html、アドレス、引用ブロック、本文、dd、div、 dl...
1. ワンストップソリューション1. 問題の分析と特定 # MySQL設定ファイルを見つけて、MyS...
MySQL パーティションテーブルの概要数億、あるいは数十億ものレコードを格納するテーブルに遭遇する...
1. プロジェクト構造 2.Tomcat.javaを呼び出す パッケージ com.calltomca...
背景ブロックチェーン ログ モジュールで作業しているときに、コンテナーが実行されている場合は、ログ ...
目次8. CSS3 クリックボタンの円形進捗チェック効果8.1 画像プレビュー8.2 index.h...