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 インストールの詳細なプロセスとよくある問題 (画像とテキスト)

推薦する

JavaScript の基本オブジェクト

目次1. オブジェクト1.1 オブジェクトとは何ですか? 1.2 なぜオブジェクトが必要なのか? 2...

Navicat for MySQL チュートリアル

まず、Navicat for MySQL をダウンロードしてインストールする必要があります。正規版の...

MysqlチューニングExplainツールの詳細な説明と実践的な演習(推奨)

MySQL チューニング ツールの詳細な説明と実践的な演習の説明 ツールの紹介の説明 分析例の説明...

支払いカウントダウンを実現し、ホームページに戻るためのjs

ホーム ページに戻るための支払いカウントダウン ケースの概要: シンプルな js 構文、getEle...

MySQL 増分バックアップとブレークポイントリカバリスクリプトの例

導入増分バックアップとは、完全バックアップまたは最後の増分バックアップの後、後続の各バックアップでは...

CSS ファンタスティックボーダーアニメーション効果の実装

今日、私はブログサイト shoptalkshow を閲覧していて、非常に興味深いこのインターフェース...

フィルターを使用して画像に透明な CSS を書く方法

フィルターを使用して画像に透明な CSS を書く方法コードをコピーコードは次のとおりです。 html...

MySQL 5.x の文字化け問題の解決方法

MySQL はよく使われるオープンソースのデータベース ソフトウェアですが、初めてのユーザーにはあま...

分散監視システムZabbixはSNMPとJMXチャネルを使用してデータを収集します

前回の記事では、Zabbix のパッシブ、アクティブ、Web 監視に関するトピックについて学習しまし...

React Stateの状態とライフサイクルの実装方法

1. コンポーネントの実装方法:組件名稱首字母必須大寫1. JS関数を通じてコン​​ポーネントを実装...

Vue で配列をクリアするいくつかの方法 (要約)

目次1. はじめに2. データを消去するいくつかの方法2.1 ref() の使用2.2 スライスの使...

Docker で Python スクリプトを実行する方法

まず、Docker イメージ用の特定のプロジェクト ディレクトリを作成します。例: mkdir /h...

DIV 背景半透明テキスト非半透明スタイル

DIVの背景は半透明ですが、DIV内の文字は半透明ではありませんコードをコピーコードは次のとおりです...

Web開発で使用される基本的な概念と技術の紹介

本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...