JavaScriptのプロトタイプの継承

JavaScriptは、プロトタイプの継承を使用しているため、人気のあるプログラミング言語の世界では非常にユニークです。それが何を意味するのか調べてみましょう

JavaScriptは、プロトタイプの継承を使用しているため、人気のあるプログラミング言語の世界では非常にユニークです。

ほとんどのオブジェクト指向言語はクラスベースの継承モデルを使用しますが、JavaScriptはプロトタイプ継承モデル

これは何を意味するのでしょうか?

すべてのJavaScriptオブジェクトには、というプロパティがあります。prototype、別のオブジェクトを指します。

この別のオブジェクトはオブジェクトのプロトタイプ

オブジェクトは、そのオブジェクトプロトタイプを使用して、プロパティとメソッドを継承します。

オブジェクトリテラル構文を使用して作成されたオブジェクトがあるとします。

const car = {}

またはで作成されたものnew Object構文:

const car = new Object()

いずれにせよ、のプロトタイプcarですObject

オブジェクトである配列を初期化する場合:

const list = []
//or
const list = new Array()

プロトタイプはArray

これを確認するには、Object.getPrototypeOf()そしてそのObject.prototype.isPrototypeOf()方法:

const car = {}
const list = []

Object.getPrototypeOf(car) === Object.prototype Object.prototype.isPrototypeOf(car)

Object.getPrototypeOf(list) === Array.prototype Array.prototype.isPrototypeOf(list)

プロトタイプのすべてのプロパティとメソッドは、そのプロトタイプを持つオブジェクトで使用できます。

Object.prototypeすべてのオブジェクトの基本プロトタイプです。

Object.getPrototypeOf(Array.prototype) == Object.prototype

Object.prototypeのプロトタイプは何か疑問に思われる場合は、プロトタイプはありません。null。特別なスノーフレーク❄️です。

あなたが見た上記の例は、プロトタイプチェーン職場で。

Arrayを拡張するオブジェクトと、それを使用してインスタンス化するオブジェクトを作成できます。プロトタイプチェーンにArrayとObjectがあり、すべての祖先からプロパティとメソッドを継承します。

使用に加えてnewオブジェクトを作成する演算子、またはオブジェクトと配列のリテラル構文を使用して、を使用してオブジェクトをインスタンス化できます。Object.create()

渡される最初の引数は、プロトタイプとして使用されるオブジェクトです。

const car = Object.create({})
const list = Object.create(Array)

を使用して配列をインスタンス化できるため、注意してください

const list = Object.create(Array.prototype)

そしてこの場合Array.isPrototypeOf(list)は偽ですがArray.prototype.isPrototypeOf(list)本当です。

私の無料ダウンロードJavaScriptビギナーズハンドブック


その他のjsチュートリアル: