Книга: Выразительный JavaScript
Конструкторы
Конструкторы
Более удобный способ создания объектов, наследуемых от некоего прототипа – конструктор. В JavaScript вызов функции с предшествующим ключевым словом new
приводит к тому, что функция работает как конструктор. Конструктор создает новый объект и возвращает его, если только явно не задано возвращение другого объекта вместо созданного. При этом свежесозданный объект доступен изнутри конструктора через переменную this
.
Говорят, что объект, созданный при помощи new
, является экземпляром конструктора.
Вот простой конструктор кроликов. Имена конструкторов принято начинать с заглавной буквы, чтобы отличать их от других функций.
function Rabbit(type) {
this.type = type;
}
var killerRabbit = new Rabbit("убийственный");
var blackRabbit = new Rabbit("чёрный");
console.log(blackRabbit.type);
// ? чёрный
Конструкторы (а вообще-то, и все функции) автоматически получают свойство под именем prototype
, которое по умолчанию содержит простой пустой объект, происходящий от Object.prototype
. Каждый экземпляр, созданный этим конструктором, будет иметь этот объект в качестве прототипа. Поэтому, чтобы добавить кроликам, созданным конструктором Rabbit
, метод speak
, мы просто можем сделать так:
Rabbit.prototype.speak = function(line) {
console.log("А " + this.type + " кролик говорит '" + line + "'");
};
blackRabbit.speak("Всем капец...");
// ? А чёрный кролик говорит 'Всем капец...'
Важно отметить разницу между тем, как прототип связан с конструктором (через свойство prototype
) и тем, как у объектов есть прототип (который можно получить через Object.getPrototypeOf
). На самом деле прототип конструктора – Function.prototype
, поскольку конструкторы – это функции. Его свойство prototype
будет прототипом экземпляров, созданных им, но не его прототипом.
- ГЛАВА 3 Выдающиеся конструкторы
- Наследование и конструкторы
- Конструкторы по умолчанию
- Блез Паскаль и Вильгельм Шиккард Первые конструкторы механических калькуляторов
- 9.2. Классы и конструкторы
- 9.2.1. Конструкторы и идентификация класса
- Статические конструкторы
- Конструкторы и наследование
- Конструкторы проверяемых заданий: обзор
- 7.6. Конструкторы
- Классовые поля, методы и конструкторы
- Модули констукторов заданий