Prototypy obiektów JavaScript
Wszystkie obiekty JavaScript dziedziczą właściwości i metody z prototypu.
W poprzednim rozdziale dowiedzieliśmy się, jak używać konstruktora obiektów :
Przykład
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
Dowiedzieliśmy się również, że nie można dodać nowej właściwości do istniejącego konstruktora obiektów:
Przykład
Person.nationality = "English";
Aby dodać nową właściwość do konstruktora, musisz dodać ją do funkcji konstruktora:
Przykład
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Dziedziczenie prototypów
Wszystkie obiekty JavaScript dziedziczą właściwości i metody z prototypu:
Date
obiekty dziedziczą zDate.prototype
Array
obiekty dziedziczą zArray.prototype
Person
obiekty dziedziczą zPerson.prototype
Znajduje się Object.prototype
na szczycie prototypowego łańcucha dziedziczenia:
Date
obiekty, Array
obiekty i Person
obiekty dziedziczą z Object.prototype
.
Dodawanie właściwości i metod do obiektów
Czasami chcesz dodać nowe właściwości (lub metody) do wszystkich istniejących obiektów danego typu.
Czasami chcesz dodać nowe właściwości (lub metody) do konstruktora obiektów.
Korzystanie z właściwości prototypowej
Właściwość JavaScript prototype
umożliwia dodawanie nowych właściwości do konstruktorów obiektów:
Przykład
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
Właściwość JavaScript prototype
pozwala również na dodawanie nowych metod do konstruktorów obiektów:
Przykład
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;
};
Modyfikuj tylko własne prototypy. Nigdy nie modyfikuj prototypów standardowych obiektów JavaScript.