Оператор instanceof требует, чтобы левым операндом был объект, а правым – имя класса объектов. Результатом оператора будет true, если объект, указанный слева, представляет собой экземпляр класса, указанного справа; в противном случае результатом будет false. В главе 9 мы увидим, что в JavaScript классы объектов определяются инициализировавшей их функцией_конструктором. Следовательно, правый операнд instanceof должен быть именем функции_конст_ руктора. Обратите внимание: все объекты представляют собой экземпляры класса Object. Например:
var d = new Date(); d instanceof Date;
// Создаем новый объект с помощью конструктора Date()
// Равно true; объект d был создан с помощью
// функции Date()
|
|
|
| Глава 5. Выражения и операторы
|
|
|
|
|
|
| d instanceof Object; // Равно true; все
| объекты
| представляют собой
| экземпляры
|
|
| // класса Object
|
|
|
|
| d instanceof Number; // Равно false; d не является объектом Number
|
|
| var a = [1, 2, 3];
| // Создаем массив с помощью литерала массива
|
|
| a instanceof Array;
| // Равно true; a –
| это массив
|
|
| a instanceof Object; // Равно true; все
| массивы
| представляют собой
| объекты
|
| a instanceof RegExp; // Равно false; массивы не
| являются регулярными выражениями
|
Если левый операнд instanceof не является объектом или если правый операнд – это объект, не имеющий функции_конструктора, instanceof возвращает false. Но если правый операнд вообще не является объектом, возвращается ошибка времени выполнения.