JavaScript Object Prototype

Alle JavaScript-objecten erven eigenschappen en methoden van het prototype.

In het vorige hoofdstuk hebben we geleerd hoe weObjectconstructor:

实例

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");

亲自试一试

We hebben inzicht gekregen in dat uNiet mogelijkNieuwe eigenschappen toevoegen aan bestaande objectconstructoren:

实例

Person.nationality = "English";

亲自试一试

Als u een nieuwe eigenschap wilt toevoegen aan een constructor, moet u deze toevoegen aan de constructor-functie:

实例

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

亲自试一试

Prototype-inheritage

Alle JavaScript-objecten erven eigenschappen en methoden van het prototype.

Datumobjecten zijn afgeleid van Date.prototype. Arrayobjecten zijn afgeleid van Array.prototype. Person-objecten zijn afgeleid van Person.prototype.

Object.prototype bevindt zich aan het top van de prototype-inheritance-keten:

Datumobjecten, arrayobjecten en Person-objecten zijn afgeleid van Object.prototype.

Eigenschappen en methoden toevoegen aan objecten

Soms wilt u nieuwe eigenschappen (of methoden) toevoegen aan alle bestaande objecten van een bepaald type.

有时,您希望向对象构造器添加新属性(或方法)。

使用 prototype 属性

JavaScript prototype 属性允许您为对象构造器添加新属性:

实例

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

亲自试一试

JavaScript prototype 属性也允许您为对象构造器添加新方法:

实例

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 对象的原型。