JavaScript Прототипы объектов
Все объекты JavaScript наследуют свойства и методы из прототипа.
В предыдущей главе мы узнали, как использовать конструктор объектов:
Пример
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");
Мы также узнали, что вы не можете добавить новое свойство к существующему конструктору объектов:
Пример
Person.nationality = "English";
Чтобы добавить новое свойство в конструктор, необходимо добавить его в функцию конструктора:
Пример
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Наследование прототипа
Все объекты JavaScript наследуют свойства и методы из прототипа.
Объекты даты наследуют от Date. прототип. Объекты массива наследуются из массива. prototype. Объекты Person наследуются от Person. prototype.
Объект. prototype находится в верхней части цепочки наследования прототипа:
Объекты Date, объекты массива и объекты Person наследуются от Object. prototype.
Добавление свойств и методов к объектам
Иногда требуется добавить новые свойства (или методы) ко всем существующим объектам заданного типа.
Иногда требуется добавить новые свойства (или методы) в конструктор объектов.
Использование свойства prototype
Свойство prototype JavaScript позволяет добавлять новые свойства в конструкторы объектов:
Пример
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
Свойство prototype JavaScript также позволяет добавлять новые методы к конструкторам объектов:
Пример
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.