JSプロトタイプとプロトタイプチェーンについての簡単な説明

JSプロトタイプとプロトタイプチェーンについての簡単な説明

1. プロトタイプ

JavaScript のすべての関数にはこのプロパティがあり、プロトタイプ プロパティを持つすべてのオブジェクトは関数です。プロトタイプの目的は、オブジェクトにメソッド/プロパティを追加することです。

関数の永続性(){}
person.prototype.name = "xiaoming"
console.log(person.prototype)//{名前: "xiaoming", コンストラクター: ƒ}

2. プロトタイプポインタ: __proto__

上記の persion 関数がインスタンス オブジェクト Persion1 を生成し、prototype を使用してそれに属性を追加する場合、記述は次のようになります。

関数の永続性(){}
person.prototype.name = "xiaoming"
Persion1 を新しい Persion() にします。
console.log(Person1) //コンソールの結果は次のようになります

インスタンス Persion1 を印刷した結果は次のとおりです。

上記に出力された結果から、Persion1.__proto__.name = persion.prototype.name、つまり、インスタンス オブジェクトの __proto__ 属性はそのコンストラクターのプロトタイプと等しいことがわかります。

上記を理解すると、プロトタイプチェーンは簡単に理解できます。Persion1.__proto__.__proto__ を通じて Object メソッドを直接見つけることができます。あまり直感的ではないかもしれませんが、コードは次のとおりです。

関数の永続性(){}
person.prototype.name = "xiaoming"
Persion1 を新しい Persion() にします。
console.log(Person1.__proto__.__proto__.toString) //プロトタイプチェーンで見つかった Object の toString メソッド console.log(Object.prototype.toString) //Object の toString メソッド

コンソールには次の結果が出力され、プロトタイプ チェーンのレベルごとの検索機能が確認されます。

要約する

あらゆるオブジェクトは、プロトタイプ チェーン、つまり __proto__ 属性を通じてレベルごとに検索できます。最終的な焦点はオブジェクトであり、唯一の方法は関数です。それらの関係はチェーンのようなもので、この関係をプロトタイプ チェーンと呼びます。

上記は、JS プロトタイプとプロトタイプ チェーンの詳細についての簡単な説明です。JS プロトタイプとプロトタイプ チェーンの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • JavaScriptプロトタイプチェーンの詳細な説明
  • JavaScript プロトタイプとプロトタイプチェーンの詳細
  • JavaScriptプロトタイプとプロトタイプチェーンを徹底的に理解する
  • JavaScriptプロトタイプチェーンを理解する
  • JS の難しさ 同期と非同期、スコープとクロージャ、プロトタイプとプロトタイプ チェーンの詳細な説明
  • js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析
  • JavaScript のプロトタイプとプロトタイプチェーンの詳細な説明

<<:  MySQL実行計画の詳細な分析

>>:  VMware15 の CentOS7 インストールの詳細なプロセスとよくある問題 (画像とテキスト)

推薦する

Vue で PC 解像度の適応を実装するためのサンプルコード

目次プラン依存関係をインストールする依存関係の導入pxをremに変換するFlexible.jsを変更...

JavaScriptオブジェクト指向について学ぼう

目次JavaScript プロトタイプチェーンオブジェクトプロトタイプトップレベルのプロトタイプOb...

Navicat は CSV データを MySQL にインポートします

この記事では、Navicatを使用してcsvデータをmysqlにインポートする方法を参考までに紹介し...

Navicatを使用してクラウドサーバーデータベースにリモート接続する方法

秘密鍵を開かずにリモート サーバーのデータベースに接続するのは非常に便利です。新しい接続でデータを入...

ウェブページの読みやすさを向上させるいくつかの方法

1. 対照的な色を使用します。ここでのコントラストとは、テキストの色と背景色のコントラストを指します...

Nginx http を https にアップグレードする手順を完了する

httpとhttpsの違いは一部のウェブサイトでは、http を開くと、安全ではないというメッセージ...

Mysql 5.7.18 MySQL proxies_priv を使用して同様のユーザーグループ管理を実装する

MySQL proxies_priv(シミュレートされたロール)を使用して同様のユーザーグループ管理...

Windows 7 で MySQL 8.0.16 をインストールして使用する場合、パスワードの変更と Navicat への接続に関する問題が発生する

MySQL のインストール時にいくつかの問題が発生しました。オンラインで見つけた回答は似たようなもの...

ビジュアルデザイナーの成長の3つの段階のまとめ

この本「グラフィックデザイナーとして成長する」は多くの人が読んでおり、私もオリジナルの PDF 版を...

Nginx におけるサーバーとロケーションのマッチングロジックの詳細な理解

サーバーマッチングロジックNginx は、リクエストを実行するサーバー ブロックを決定するときに、サ...

MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル (Ubuntu 16.04)

公式 MySQL Web サイトから Ubuntu Linux 用の最新バージョンの MySQL を...

実行中のDockerコンテナのポートマッピングを変更する方法

序文docker run がコンテナを作成して実行するときに、-p を使用してポート マッピング ル...

DockerでのinfluxDB分散時系列データベースのインストールと関連操作について簡単に説明します。

influxDB の紹介influxDB は分散型時系列データベースです。 cAdvisor はリ...

Nginxポーリングアルゴリズムの基本的な実装方法の詳細な説明

ポーリングアルゴリズムの紹介多くの人が職場で nginx を使用しており、その設定に精通しています。...