Prototyp obiektu JavaScript

Wszystkie obiekty JavaScript dziedziczą właściwości i metody z prototypu.

W poprzednim rozdziale nauczyliśmy się, jak używaćKonstruktor obiektu:

Instancja

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

Spróbuj sam

Zrozumieliśmy, żeNie możnaDodawanie nowej właściwości do istniejącego konstruktora obiektu:

Instancja

Person.nationality = "English";

Spróbuj sam

Aby dodać nową właściwość do konstruktora, musi być ona dodana do funkcji konstruktora:

Instancja

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

Spróbuj sam

Prototypowy dziedziczenie

Wszystkie obiekty JavaScript dziedziczą właściwości i metody z prototypu.

Obiekty daty dziedziczą z Date.prototype. Obiekty tablicowe dziedziczą z Array.prototype. Obiekty Person dziedziczą z Person.prototype.

Object.prototype znajduje się na szczycie łańcucha prototypów:

Obiekty daty, tablicowe i Person dziedziczą z Object.prototype.

Dodawanie właściwości i metod do obiektu

Czasami, chcesz dodać nową właściwość (lub metodę) do wszystkich istniejących obiektów danego typu.

Czasami chcesz dodać nowe atrybuty (lub metody) do konstruktora obiektu.

Użycie prototype Atrybuty

Atrybut prototype JavaScript pozwala również na dodanie nowych atrybutów do konstruktora obiektu:

Instancja

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

Spróbuj sam

Atrybut prototype JavaScript pozwala również na dodanie nowych metod do konstruktora obiektu:

Instancja

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

Spróbuj sam

Proszę, modyfikuj tylkoSam原型。Nigdy nie modyfikuj prototypu standardowych obiektów JavaScript.