Книга: JavaScript. Подробное руководство, 6-е издание
8.2.3. Вызов конструкторов
8.2.3. Вызов конструкторов
Если вызову функции или метода предшествует ключевое слово new
, следовательно, это вызов конструктора. (Вызовы конструкторов обсуждались в разделах 4.6 и 6.1.2, а более подробно конструкторы будут рассматриваться в главе 9.) Вызов конструктора отличается от вызова обычной функции или метода особенностями обработки аргументов, контекстом вызова и возвращаемым значением.
Если вызов конструктора включает список аргументов в скобках, эти выражения-аргументы вычисляются и передаются конструктору точно так же, как любой другой функции или методу. Но если конструктор не имеет параметров, синтаксис вызова конструктора в языке JavaScript позволяет вообще опустить скобки и список аргументов. При вызове конструктора всегда можно опустить пару пустых скобок. Например, следующие две строки полностью эквивалентны:
var о = new Object();
var о = new Object;
Вызов конструктора создает новый пустой объект, наследующий свойство prototype
конструктора. Назначение функции-конструктора - инициализировать объект, и этот вновь созданный объект передается конструктору как контекст вызова, благодаря чему функция-конструктор может ссылаться на него с помощью ключевого слова this
. Обратите внимание, что вновь созданный объект передается как контекст вызова, даже если вызов конструктора выглядит как вызов метода. То есть в выражении new о.m()
контекстом вызова будет вновь созданный объект, а не объект о.
Как правило, в функциях-конструкторах не используется инструкция return
. Обычно они выполняют инициализацию нового объекта и неявно возвращают его, по достижении своего конца. В этом случае значением выражения вызова конструктора становится новый объект. Однако если конструктор явно вернет объект с помощью инструкции return
, то значением выражения вызова конструктора станет этот объект. Если конструктор выполнит инструкцию return
без значения или вернет с ее помощью простое значение, это возвращаемое значение будет проигнорировано и в качестве результата вызова будет использован новый объект.
- Перегрузка конструкторов
- Порядок вызова конструкторов
- 8.2. Вызов функций
- 8.2.1. Вызов функций
- Генерирование конструкторов
- Роль конструкторов
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- Системные вызовы и драйверы устройств
- Определение необходимого системного вызова
- Системные вызовы управления процессорной привязкой
- Вызовы функций
- Другие системные вызовы для управления файлами