Прототипы объектов JavaScript

Все объекты JavaScript наследуют свойства и методы от прототипа.

В предыдущей главе мы学习了, как использоватьКонструктор объекта:

Пример

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

Попробуйте сами

Мы уже осознали, что выНевозможноДобавление нового атрибута к конструктору существующего объекта:

Пример

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. Массивы наследуются от Array.prototype. Объекты Person наследуются от Person.prototype.

Object.prototype находится на вершине цепочки прототипного наследования:

Объекты даты, массивы и объекты Person наследуются от Object.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";

Попробуйте сами

Прототип 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;
};

Попробуйте сами

Модифицируйте толькоВы самиprototype. Никогда не изменяйте prototype стандартных объектов JavaScript.