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