Оператор 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 можно использовать для проверки того, что переменная является массивом:
У вас вот тут вот очепятка: myString instanceof Objec // true
Следовало бы упомянуть про особенности работы с фреймами.
ух ты. а я всегда думал что для такого наследования
нужно еще указывать конструктор:
а оно и так всё работает.
Для проверка типа переменной используйте
да, только Вы забыли toLowerCase():
function typeOf(value) { return Object.prototype.toString.call(value).slice(8, -1).toLowerCase(); }
instanceof можно использовать для определения типа поля объекта, сравните
почему
даёт false ???
s - это же объект класса String, имеющий прототип, т.е.
String.prototype.asBool = function () {...}
s.asBool() - это сработает.
Hello, all.
I have a question about this example:
Can I check the "a instanceof Array" only?
What for this verify: typeof a == "object"??
Заранее спасибо за ответ)