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

すべてのJavaScriptオブジェクトはプロトタイプから属性とメソッドを継承しています。

前章では、以下の使用方法を学びました:オブジェクトのコンストラクタ

インスタンス

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
var myFather = new Person("Bill", "Gates", 62, "blue");
var myMother = new Person("Steve", "Jobs", 56, "green");

自分で試してみてください

私たちはあなたができません既存のオブジェクトのコンストラクタに新しい属性を追加:

インスタンス

Person.nationality = "English";

自分で試してみてください

コンストラクタに新しい属性を追加するには、それをコンストラクタ関数に追加する必要があります:

インスタンス

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.nationality = "English";
}

自分で試してみてください

プロトタイプ継承

すべてのJavaScriptオブジェクトはプロトタイプから属性とメソッドを継承しています。

DateオブジェクトはDate.prototypeを継承しています。ArrayオブジェクトはArray.prototypeを継承しています。PersonオブジェクトはPerson.prototypeを継承しています。

Object.prototypeはプロトタイプ継承の先頭に位置しています:

Dateオブジェクト、Arrayオブジェクト、PersonオブジェクトはObject.prototypeを継承しています。

オブジェクトに属性とメソッドを追加

時々、すべての指定されたタイプの既存オブジェクトに新しい属性(またはメソッド)を追加したいと考えます。

時には、オブジェクトコンストラクタに新しい属性(またはメソッド)を追加したいことがあります。

使用 prototype 属性

JavaScript プロトタイプ属性も、オブジェクトコンストラクタに新しい属性を追加することができます:

インスタンス

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";

自分で試してみてください

JavaScript プロトタイプ属性も、オブジェクトコンストラクタに新しいメソッドを追加することができます:

インスタンス

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
    return this.firstName + " " + this.lastName;
};

自分で試してみてください

ただ修改してくださいあなた自身のプロトタイプ。標準の JavaScript オブジェクトのプロトタイプを変更することは絶対にしないでください。