0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScript プロトタイプチェーンの位置関係図

Posted at

はじめに

プロトタイプチェーンの位置関係を調べて位置関係図を作りました。

プロトタイプチェーンの位置関係図

プロトタイプチェーンの位置関係を調べて作った図がこちらです。

プロトタイプチェーンの位置関係1

黒い実線の上向きの矢印がプロトタイプチェーンの方向です。Object.getPrototypeOf(X) もしくは X.__proto__ の先が示す方向です。

中央下のStringfunction() {}Number は関数です。

図を作って思ったのですが、 typeof Function.prototypeobject にならないのは仕様ミスではないでしょうか。

newとconstructorを加えた図

さらに new 演算子と constructor プロパティを調べて作った位置関係図がこちらです。

プロトタイプチェーンの位置関係2

T.prototype.constructorT です。

T.prototype.constructor.constructorFunction です。

Object.getPrototypeOf(Function)Function.prototype です。

この図を見ながら MDN の オブジェクトのプロトタイプ にある Object.createObject.assign でオブジェクトのプロトタイプを設定する例を読むと、効果的に学習できると思います。

さいごに

プロトタイプチェーンの位置関係図を示しました。

JavaScript では関数やプロパティをプロトタイプチェーンを辿って探します。 "abc".func() において、関数 func"abc" 上に存在しなくても、プロトタイプチェーン上に func が存在すれば、その関数が実行されます。

なので、プロトタイプチェーンの位置関係がどうなっているかは、JavaScript を理解する上で重要な知識です。

しかし、プロトタイプチェーン上に関数やプロパティを設定することは プロトタイプ汚染 と呼ばれ、推奨されておりません。初級者がこの知識を使う機会はほとんどないと思います。ですが知っておいても損はないと思います。

この位置関係図で JavaScript の理解が深まれば幸いです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?