この記事を読むと、プロトタイプとプロトタイプ チェーンがとてもシンプルであることがわかります。 上記の古典的なプロトタイプチェーン等式図は、次の学習に従って簡単に習得できます。 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 をインストールする方法
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
クロージャは、純粋関数型プログラミング言語の伝統的な機能の 1 つです。クロージャをコア言語構造の不...
ウェブサイトのレイアウトの多様化は、当社のフロントエンドの得意分野です。最近、UC ブラウザのデフォ...
目次原理ネットワーク環境の準備インストール前の準備NIS サーバー操作NIS クライアント操作原理N...
システム トレイ アイコンは、今日でも魔法のような機能です。アイコンを右クリックして目的のアクション...
私が学習していたときに使用していたバージョンは比較的新しいものであり、インターネット上のチュートリア...
<tfoot> タグは、テーブル フッターのスタイルを定義するために使用されます。基本構...
1.マージンとは何ですか?マージンは、要素の周囲のスペースの間隔を制御するために使用され、視覚的にス...
目次序文1. エラーログ2. バイナリログ1. バイナリログを有効にする2. バイナリログ形式3. ...
ネットワークリクエストを送信すると、次の保存情報が表示されます。おめでとうございます。ドメインを越え...
Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...
今日の画面解像度は、320 ピクセル (iPhone) ほど小さいものから、2560 ピクセル以上 ...
WeChatアプレットuniappは左スワイプで削除効果を実現成果を達成する1. スワイプしてリス...
目次VARCHAR 型と CHAR 型結論: VARCHAR 型と CHAR 型VARCHAR と ...
insert into employee values(null,'張三','...