この記事を読むと、プロトタイプとプロトタイプ チェーンがとてもシンプルであることがわかります。 上記の古典的なプロトタイプチェーン等式図は、次の学習に従って簡単に習得できます。 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 をインストールする方法
目次序文1. Props、$emit一方向データフロー2. $親、$子3. $attrs、$list...
需要背景プロジェクトはVueを使用して作成され、ビジネス要件にはパズル効果があります。デフォルトの背...
冒頭にこう書かれています:アブソリュートは言った。「親戚よ、私はあなたを私の人生で見たくない!」なぜ...
目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...
MySQL ページング分析の原理と効率改善PERCONA PERFORMANCE CONFERENC...
まず実装手順について説明します。最終結果 2. コードの実装HTML部分 <div class...
1. ランナーコンテナを作成する mk@mk-pc:~/Desktop$ docker run -d...
最近MySQLデータベースのバージョンを変更する必要があり、それを記録するために記事を書きます1. ...
1. デフォルトでインストールされているMySQLの文字セットを確認するmysql> '...
1. ダウンロードアドレス: mysql-8.0.17-winx64ダウンロードして解凍する2. フ...
目次なぜマテリアルライブラリが必要なのでしょうか?材質は何ですか?素材の種類fuep、vue3 ベー...
今日、仕事中に、一時的に追加した友人から、Web ページを使用して訪問者の QQ を取得する方法を尋...
関連記事: Win7 x64 に解凍版の mysql 5.7.18 winx64 をインストールする...
HTMLタグの説明1. HTMLタグタグ: !DOCTYPE説明: HTML ドキュメントが準拠する...
スーパーバイザー紹介Supervisor は、Python で開発されたクライアント/サーバー サー...