Оператор instanceof используется для проверки, принадлежит ли объект данному типу. Например, при поимке исключения нужно обработать только исключение определенного типа.
В левой части оператора instanceof указывается проверяемый объект, а с правой - функция-конструктор для проверки.
Пример:
Выделить все
var theDay = new Date(2009, 11, 17);
if(theDay instanceof Date){alert("Объект класса Date")// ...}
Оператор instanceof учитывает наследование.
Следующий пример демонстрирует, что объекты String и Date принадлежат типу Object.
Пример: проверка унаследованных объектов
Выделить все
var myString = new String()var myDate = new Date()
myString instanceof String // true
myString instanceof Objec // true
myString instanceof Date // false
myDate instanceof Date // true
myDate instanceof Object // true
myDate instanceof String // false
То же верно и для типов, объявленных пользователем.
Например, в следующем примере объект типа Honda также принадлежит Car и Object.
Пример:
Выделить все
function Car(model){this.model = model
}function Honda(model){this.model = model
this.isHonda = true}
Honda.prototype = new Car()
honda = new Honda("Accord")
honda instanceof Honda // true
honda instanceof Car // true
honda instanceof Object // true
honda instanceof Date // false
Дежурная шутка
Было это в эпоху сильного спама в ICQ. Надоели спаммеры, завел я себе антиспам-бота. Дефолтный вопрос меня не особо устраивал про нашу планету, решил выпендриться, сделал вопрос "как зовут Валерия Кипелова?", ответ - "Валерий, Валера", применил. Думаю, не, попса, дай-ка поменяю, сделал "Как зовут Сергея Маврина?". И все, за полгода у меня не было ни одного сообщения спама, правда, я стал замечать, что ко мне вообще никто не стучится, даже те, кому я давал свой номер и просил добавиться. Думаю, тупят, не могут ответ нормально написать на вопрос, сам их добавлял. Но через какое-то время я решил поменять вопрос на что-нибудь попроще и обнаружил, что поменяв вопрос, я забыл поменять ответ, и никто за полгода не смог догадаться, что Сергея Маврина зовут Валера...