JavaScript Object Prototype

Alle JavaScript-objekter arver egenskaber og metoder fra prototypen.

I det forrige kapitel lærte vi, hvordan vi brugerObjektconstructorer:

eksempel

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

prøv det selv

Vi har erkendt, at duIkkeTilføj nye egenskaber til eksisterende objektconstructorer:

eksempel

Person.nationality = "English";

prøv det selv

Hvis du skal tilføje en ny egenskab til konstruktøren, skal du tilføje den til konstruktørfunktionen:

eksempel

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

prøv det selv

Prototype-inheritans

Alle JavaScript-objekter arver egenskaber og metoder fra prototypen.

Datoobjekter arver fra Date.prototype. Arrayobjekter arver fra Array.prototype. Person-objekter arver fra Person.prototype.

Object.prototype er placeret i toppen af prototype-inheritancerækken:

Datoobjekter, arrayobjekter og Person-objekter arver fra Object.prototype.

Tilføjelse af egenskaber og metoder til objekter

Irriteret, ønsker du at tilføje nye egenskaber (eller metoder) til alle eksisterende objekter af en given type.

Nogle gange ønsker du at tilføje nye egenskaber (eller metoder) til objektbyggere.

brug prototype egenskaber

JavaScript prototype-attributter giver dig mulighed for at tilføje nye egenskaber til objektbyggere:

eksempel

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

prøv det selv

JavaScript prototype-attributter tillader også, at du tilføjer nye metoder til objektbyggere:

eksempel

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

prøv det selv

kun ændredu selvprototypen. Det er aldrig en god idé at ændre standard JavaScript-objektets prototype.