blog

プロトタイプとプロトタイプチェーンの理解、シリーズを理解するために秒、継続的に更新される

プロトタイプとプロトタイプチェーンの体系的な研究では、まず水増しとしていくつかの基本的な知識を学びます。 jsのオブジェクトはプロトタイプに基づいています。プロトタイプは、新しく作成されたオブジェクト...

Jul 15, 2020 · 4 min. read
シェア

I. 基本概念

プロトタイプとプロトタイプ・チェーンの体系的な学習では、まず前準備としていくつかの基本を学びます。

jsのオブジェクトはプロトタイプに基づいています。プロトタイプは、新しく生成されたオブジェクトが含まなければならないプロパティのリストを定義し、実装します。

インスタンス化された各オブジェクトはそれ自身のプロトタイプやコンストラクタを持ち、これらのプロトタイプやコンストラクタもまたそれ自身のプロトタイプやコンストラクタを持つことがあります。

prototype_proto_とprototypeの間の解釈

プロトタイプの知識をまとめるには、あることを理解する必要があります。

jsでは、オブジェクトを使ったり操作したりすることが多く、オブジェクトとプロトタイプ、プロトタイプチェーンは表裏一体なので、プロトタイプとプロトタイプチェーンはマスターしておきたい内容です。

まず、プロトタイプとは何かを理解しましょう。

プロトタイプ:プロトタイプオブジェクトのオブジェクト

プロトタイプ:関数オブジェクトのサブオブジェクトで、プロトタイプは関数のプロトタイプを表します。

オブジェクトを構築するために最も一般的に使用される方法は、直接オブジェクトを作成し、オブジェクトを作成するコンストラクタを使用するので、それに応じて、関数は、プロトタイプに追加され、関数の追加に起因する、明確なプロトタイプの定義が混乱しやすくなっている、これもプロトタイプとプロトタイプチェーンの難しさの一つである、この困難を打破し、プロトタイプとプロトタイプチェーンは、学習することは非常に容易になり、その後、どのようにそれを突破するには?

直接jsを使用して提供されたコンテンツを解析する価値があるかもしれません。

オブジェクトとコンストラクタを作成します。



let a={};
function b(){
 console.log("コンストラクタによってインスタンス化されたオブジェクト");
 };

次に、それらのプロトタイプを表示します。

console.dir(a);
console.dir(b);
ブラウザで表示します。



この時点で、オブジェクトにはプロトタイプ_proto_しか含まれていないのに対し、関数b()にはプロトタイプ_proto_だけでなく、プロトタイプも含まれていることがよくわかります。

jsの定義では、関数もオブジェクトなので、関数はプロトタイプオブジェクト_proto_を含み、関数自身もプロトタイプprototypeを含むので、関数のプロトタイプは_proto_とprototypeの2つあります。

関数を通してインスタンス化されたオブジェクトについてはどうでしょうか?

概念的には、プロトタイプは、新しく生成されるオブジェクトに含まれなければならない属性のリストを定義し、実装します。コンストラクタによってインスタンス化されたオブジェクトは、コンストラクタの属性のリストを含み、このコンストラクタの属性のリストを所有します。

同様に、関数のプロトタイプには関数のプロパティ・リストが含まれているため、この関数をコンストラクタとして使用してオブジェクトをインスタンス化すると、インスタンス化されたオブジェクトのプロトタイプは関数のプロトタイプになります。

b() を使用して、上記の例に基づいてオブジェクトをインスタンス化してみましょう。

let c=new b();
console.dir(c);
その結果を見てください。



bのprototype_proto_に、コンストラクタ:f b()と表示されていることがわかります。

コンストラクタはプロトタイプに含まれるポインタであり、関数によってインスタンス化されたオブジェクトでは、このポインタはこのオブジェクトをインスタンス化するコンストラクタを指しています。

そして、ビュー関数b()関数プロトタイププロトタイプは何です。



b()のプロトタイプの中にconstructor:f b()があるのは明らかです。
十分明確でしょう?
プロトタイプはオブジェクトでもあるので、プロトタイプが何であれ、デフォルトのプロトタイプである_proto_:objectが付属しています。
では、なぜオブジェクトなのか?
これは、テーブルがなぜテーブルと呼ばれるのかという疑問と同じようなものです。もっと婉曲に言えば、オブジェクトにはjsのオブジェクトが持つべき基本的なプロパティのリストが含まれており、自己完結しています。
この質問は栄養のあるものではありませんが、ちょっとした知識が必要です。
つまり:

























Read next

React Native Expo Rushチュートリアル6 - 認証プロセス

ほとんどのアプリケーションでは、ユーザーに関連するデータやその他のプライベートなコンテンツにアクセスするために、何らかの方法でユーザーを認証する必要があります。通常、フローは次のようになります。 ユーザがアプリケーションを開きます。 アプリケーションは、永続ストレージから認証状態をロードします。 認証状態がロードされると、有効な認証状態がロードされているかどうかによって、ユーザは認証画面または...

Jul 15, 2020 · 7 min read