Все выражения вызова включают пару круглых скобок и выражение перед открывающей круглой скобкой. Если это выражение является выражением обращения к свойству, такой вызов называется вызовом метода. При вызове метода объект или массив, к свойству которого производится обращение, становится значением параметра this, доступного в теле функции во время его выполнения. Это обеспечивает поддержку парадигмы объектно-ориентированного программирования, согласно которой функции (в ООП обычно называются «методами») получают возможность манипулировать объектом, частью которого они являются. Подробности приводятся в главе 9.
ECMAScript 5, если функция определяется в строгом режиме, при вызове она получает в ключевом слове this не глобальный объект, а значение undefined . Подробнее о строгом режиме рассказывается в разделе 5.7.3.
4.6. Выражения создания объектов
Выражение создания объекта создает новый объект и вызывает функцию (называемую конструктором) для инициализации свойств этого объекта. Выражения создания объектов похожи на выражения вызова, за исключением того, что им предшествует ключевое слово new:
new Object()
new Point(2,3)
Если в выражении создания объекта функции-конструктору не передается ни одного аргумента, пустую пару круглых скобок можно опустить:
new Object
new Date
При вычислении выражения создания объекта интерпретатор JavaScript сначала создает новый пустой объект, как если бы для создания использовался пустой инициализатор объекта {} , а затем вызывает указанную функцию с указанными аргументами, передавая ей новый объект в качестве значения ключевого слова this . Функция может использовать его для инициализации свойств только что созданного объекта. Функции, которые создаются специально, чтобы играть роль конструктора, не должны возвращать значение, а значением выражения создания объекта становится созданный и инициализированный объект. Если конструктор возвращает какой-либо объект, этот объект становится значением всего выражения создания объекта, а вновь созданный объект уничтожается.
Более подробно конструкторы описываются в главе 9.
В языке 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 |
любое, любое —> любое |
Обратите внимание, что большинство операторов обозначаются символами пунктуации, такими как + и = , а некоторые - ключевыми словами, например delete и instanceof . И ключевые слова, и знаки пунктуации обозначают обычные операторы, просто первые имеют менее лаконичный синтаксис.
Читать дальше
Конец ознакомительного отрывка
Купить книгу