Выбрать главу

4.6. Выражения создания объектов

Выражение создания объекта создает новый объект и вызывает функцию (называемую конструктором) для инициализации свойств этого объекта. Выражения создания объектов похожи на выражения вызова, за исключением того, что им предшествует ключевое слово new:

new Object()

new Point(2,3)

Если в выражении создания объекта функции-конструктору не передается ни одного аргумента, пустую пару круглых скобок можно опустить:

new Object

new Date

При вычислении выражения создания объекта интерпретатор JavaScript сначала создает новый пустой объект, как если бы для создания использовался пустой инициализатор объекта {}, а затем вызывает указанную функцию с указанными аргументами, передавая ей новый объект в качестве значения ключевого слова this. Функция может использовать его для инициализации свойств только что созданного объекта. Функции, которые создаются специально, чтобы играть роль конструктора, не должны возвращать значение, а значением выражения создания объекта становится созданный и инициализированный объект. Если конструктор возвращает какой-либо объект, этот объект становится значением всего выражения создания объекта, а вновь созданный объект уничтожается.

Более подробно конструкторы описываются в главе 9.

4.7. Обзор операторов

В языке JavaScript операторы используются в арифметических выражениях, выражениях сравнения, логических выражениях, выражениях присваивания и т. д. Перечень операторов приводится в табл. 4.1, которую можно использовать как справочник.

Таблица 4.1. Операторы JavaScript
Оператор Операция А N Типы значений
++ Префиксный и постфиксный инкремент R 1 левостороннее выражение —> число
-- Префиксный и постфиксный декремент R 1 левостороннее выражение —> число
- Унарный минус R 1 число —> число
+ Преобразование в число R 1 число —> число
~ Поразрядная инверсия R 1 целое —> целое
Оператор Операция А N Типы значений
! Логическая инверсия R 1 логическое —> логическое
delete Удаление свойства R 1 левостороннее выражение —> логическое
typeof Определение типа операнда R 1 любое —> строка
void Возврат неопределенного значения R 1 любое —> undefined
 *, /, % Умножение, деление, деление по модулю L 2 число, число —> число
+, - Сложение, вычитание L 2 число, число —> число
+ Конкатенация строк L 2 строка, строка —> строка
<< Сдвиг влево L 2 целое, целое —> целое
>> Сдвиг вправо с сохранением знака L 2 целое, целое —> целое
>>> Сдвиг вправо с заполнением нулями L 2 целое, целое -> целое
<, <=, >, >= Сравнение числовых значений L 2 число, число —> логическое
<, <=, >, >= Сравнение строк L 2 строка, строка —> логическое
instanceof Проверка на принадлежность классу L 2 объект, функция —> логическое
in Проверка наличия свойства L 2 строка, объект —> логическое
== Проверка равенства L 2 любое, любое —»логическое
!= Проверка неравенства L 2 любое, любое —> логическое
=== Проверка идентичности L 2 любое, любое —> логическое
!== Проверка неидентичности L 2 любое, любое —»логическое
& Поразрядное И L 2 целое, целое —»целое
^ Поразрядное ИСКЛЮЧАЮЩЕЕ ИЛИ L 2 целое, целое —»целое
| Поразрядное ИЛИ L 2 целое, целое —»целое
&& Логическое И L 2 любое, любое —> любое
|| Логическое ИЛИ L 2 любое, любое —> любое
?: Выбор второго или третьего операнда R 3 логическое, любое, любое —> любое
= Присваивание переменной или свойству R 2 левостороннее выражение, любое —> любое
*=. /=. %=. +=. -=, &=, "=, |=, <<=, >>=, >>>= Операция с присваиванием R 2 левостороннее выражение, любое —> любое
, Отбросить первый операнд, вернуть второй L 2 любое, любое —> любое