Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

"one" < 3 // Числовое сравнение, "one" преобразуется в NaN. Результат: false.

Наконец, обратите внимание, что операторы

<=
(меньше или равно) и
>=
(больше или равно) для определения «равенства» двух значений не используют операторы равенства или идентичности. Оператор «меньше или равно» определяется просто как «не больше», а оператор «больше или равно» - как «не меньше». Единственное исключение имеет место, когда один из операндов представляет собой значение
NaN
(или преобразуется в него). В этом случае все четыре оператора сравнения возвращают
false
.

4.9.3. Оператор in

Оператор

in
требует, чтобы левый операнд был строкой или мог быть преобразован в строку. Правым операндом должен быть объект. Результатом оператора будет значение
true
, если левое значение представляет собой имя свойства объекта, указанного справа. Например:

var point = { х:1, у:1 }; // Определить объект

"х" in point // => true: объект имеет свойство с именем "х"

"z" in point // => false: объект не имеет свойства с именем "z"

"toString” in point // => true: объект наследует метод toString

var data = [7,8,9]; // Массив с элементами 0, 1 и 2

"0" in data // => true: массив содержит элемент "0"

1 in data // => true: числа преобразуются в строки

3 in data // => false: нет элемента 3

4.9.4. Оператор instanceof

Оператор

instanceof
требует, чтобы левым операндом был объект, а правым - имя класса объектов. Результатом оператора будет значение
true
, если объект, указанный слева, является экземпляром класса, указанного справа. В противном случае результатом будет
false
. В главе 9 рассказывается, что классы объектов в языке JavaScript определяются инициализировавшей их функцией-конструктором. Следовательно, правый операнд оператора
instanceof
должен быть именем функции-конструктора. Например:

var d = new Date; // Создать новый объект с помощью конструктора Date

d instanceof Date; // Вернет true; объект d был создан с функцией Date

d instanceof Object; // Вернет true; все объекты являются экземплярами Object

d instanceof Number; // Вернет false; d не является объектом Number

var a = [1, 2, 3]; // Создать массив с помощью литерала массива

a instanceof Array; // Вернет true; а - это массив

a instanceof Object; // Вернет true; все массивы являются объектами

a instanceof RegExp;// Вернет false; массивы не являются регулярными выражениями

Обратите внимание, что все объекты являются экземплярами класса

Object
. Определяя, является ли объект экземпляром класса, оператор
instanceof
принимает во внимание и «суперклассы». Если левый операнд
instanceof
не является объектом,
instanceof
возвращает
false
. Если правый операнд не является функцией, возбуждается исключение
ТуреЕггог
.

Чтобы понять, как действует оператор

instanceof
, необходимо познакомиться с таким понятием, как «цепочка прототипов». Это - механизм наследования в JavaScript; он описывается в разделе 6.2.2. Чтобы вычислить значение выражения
о instanceof f
, интерпретатор JavaScript определяет значение
f.prototype
и затем пытается отыскать это значение в цепочке прототипов объекта
о
. В случае успеха объект
о
считается экземпляром класса
f
(или суперкласса класса
f
), и оператор возвращает
true
. Если значение
f.prototype
отсутствует в цепочке прототипов объекта
о
, то объект
о
не является экземпляром класса
f
и оператор
instanceof
возвращает
false
.

4.10. Логические выражения

Логические операторы

&&, ||
и
!
используются для выполнения операций булевой алгебры и часто применяются в сочетании с операторами отношений для объединения двух выражений отношений в одно более сложное выражение. Эти операторы описываются в подразделах, следующих ниже. Чтобы понять, как они действуют, вам может потребоваться еще раз прочитать о концепции «истинности» и «ложности» значений в разделе 3.3.

  • Читать дальше
  • 1
  • ...
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: