JavaScript. Подробное руководство, 6-е издание
Часть 40 из 535 Информация о книге
Наконец, обратите внимание, что операторы
(меньше или равно) и<b><=</b>(больше или равно) для определения «равенства» двух значений не используют операторы равенства или идентичности. Оператор «меньше или равно» определяется просто как «не больше», а оператор «больше или равно» - как «не меньше». Единственное исключение имеет место, когда один из операндов представляет собой значение<b>>= </b>(или преобразуется в него). В этом случае все четыре оператора сравнения возвращают<b>NaN</b>.<b>false</b>4.9.3. Оператор in
Оператор
требует, чтобы левый операнд был строкой или мог быть преобразован в строку. Правым операндом должен быть объект. Результатом оператора будет значение<b>in</b>, если левое значение представляет собой имя свойства объекта, указанного справа. Например:<b>true</b><b>var point = { х:1, у:1 }; // Определить объект</b><b>"х" in point // => true: объект имеет свойство с именем "х"</b><b>"z" in point // => false: объект не имеет свойства с именем "z"</b><b>"toString” in point // => true: объект наследует метод toString</b><b>var data = [7,8,9]; // Массив с элементами 0, 1 и 2</b><b>"0" in data // => true: массив содержит элемент "0"</b><b>1 in data // => true: числа преобразуются в строки</b><b>3 in data // => false: нет элемента 3</b>4.9.4. Оператор instanceof
Оператор
требует, чтобы левым операндом был объект, а правым - имя класса объектов. Результатом оператора будет значение<b>instanceof</b>, если объект, указанный слева, является экземпляром класса, указанного справа. В противном случае результатом будет<b>true</b>. В главе 9 рассказывается, что классы объектов в языке JavaScript определяются инициализировавшей их функцией-конструктором. Следовательно, правый операнд оператора<b>false</b>должен быть именем функции-конструктора. Например:<b>instanceof</b><b>var d = new Date(); // Создать новый объект с помощью конструктора Date()</b><b>d instanceof Date; // Вернет true; объект d был создан с функцией Date()</b><b>d instanceof Object; // Вернет true; все объекты являются экземплярами Object</b><b>d instanceof Number; // Вернет false; d не является объектом Number</b><b>var a = [1, 2, 3]; // Создать массив с помощью литерала массива</b><b>a instanceof Array; // Вернет true; а - это массив</b><b>a instanceof Object; // Вернет true; все массивы являются объектами</b><b>a instanceof RegExp;// Вернет false; массивы не являются регулярными выражениями</b>Обратите внимание, что все объекты являются экземплярами класса
. Определяя, является ли объект экземпляром класса, оператор<b>Object</b>принимает во внимание и «суперклассы». Если левый операнд<b>instanceof</b>не является объектом,<b>instanceof</b>возвращает<b>instanceof</b>. Если правый операнд не является функцией, возбуждается исключение<b>false</b>.<b>ТуреЕггог</b>Чтобы понять, как действует оператор
, необходимо познакомиться с таким понятием, как «цепочка прототипов». Это - механизм наследования в JavaScript; он описывается в разделе 6.2.2. Чтобы вычислить значение выражения<b>instanceof</b>, интерпретатор JavaScript определяет значение<b>о instanceof f</b>и затем пытается отыскать это значение в цепочке прототипов объекта<b>f.prototype</b>. В случае успеха объект<b>о</b>считается экземпляром класса<b>о</b>(или суперкласса класса<b>f</b>), и оператор возвращает<b>f</b>. Если значение<b>true</b>отсутствует в цепочке прототипов объекта<b>f.prototype</b>, то объект<b>о</b>не является экземпляром класса<b>о</b>и оператор<b>f</b>возвращает<b>instanceof</b>.<b>false</b>4.10. Логические выражения
Логические операторы
и<b>&&, ||</b>используются для выполнения операций булевой алгебры и часто применяются в сочетании с операторами отношений для объединения двух выражений отношений в одно более сложное выражение. Эти операторы описываются в подразделах, следующих ниже. Чтобы понять, как они действуют, вам может потребоваться еще раз прочитать о концепции «истинности» и «ложности» значений в разделе 3.3.<b>!</b>4.10.1. Логическое И (&&)
Условно говоря, оператор
действует на трех уровнях. На самом простом уровне, когда в операции участвуют логические операнды, оператор<b>&&</b>выполняет операцию «логическое И» над двумя значениями: он возвращает<b>&&</b>тогда и только тогда, когда оба операнда имеют значение<b>true</b>. Если один или оба операнда имеют значение<b>true</b>, оператор возвращает<b>false</b>.<b>false</b>