この記事を読むと、プロトタイプとプロトタイプ チェーンがとてもシンプルであることがわかります。 上記の古典的なプロトタイプチェーン等式図は、次の学習に従って簡単に習得できます。 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 で CSS 変数を使用する方法:export キーワードを使用して、js オブジェクトを le...
この記事では、星空アニメーションを実現するための高度な CSS3 LESS のサンプルコードを次のよ...
序文CSS グリッドは通常、さまざまなフレームワークにバンドルされていますが、実際のビジネス ニーズ...
デフォルトでは、CentOS 7 上の PHP は apache または nobody として実行さ...
この記事の例では、キャンバスをベースにした超クールな水の光の効果を実装するための具体的なコードを参考...
まずSQLを書く SELECT DISTINCT from_id タラから cod.from_id ...
私は長い間PHPに触れてきましたが、インストール環境は非常に不慣れです。多くの問題に遭遇しました。B...
序文Sass は CSS3 言語の拡張機能です。Sass を使用すると、より良いスタイルシートをより...
1. データベースとデータベースインスタンスMySQL の研究では、データベースとデータベース イン...
Ubuntu 18.04 を使用する Python 開発者向けの参考資料です。 1. Ubuntu ...
目次序文根拠手順1. CDから仮想マシンを起動する2. GPartedツールを使用してパーティション...
MySQL 認証コマンド grant の使用方法:この記事の例は MySQL 5.0 以降で実行され...
目次1. 公式の足場を使って構築する2. プロジェクトディレクトリ分析3. TypeScript の...
Zabbix サーバー環境プラットフォームZABBIX バージョン 4.4セントOS8 MySQL ...
1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...