Оператор 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 Object // 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
instanceof можно использовать для проверки того, что переменная является массивом:
function is_array (a) { return (typeof a == "object") && (a instanceof Array); }У вас вот тут вот очепятка: myString instanceof Objec // true
Следовало бы упомянуть про особенности работы с фреймами.
ух ты. а я всегда думал что для такого наследования
нужно еще указывать конструктор:
а оно и так всё работает.
Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.