Javascript.RU

instanceof

Синтаксис

var isInstance = object instanceof ObjectType

Аргументы

object
Объект
ObjectType
Конструктор(тип) для сравнения

Описание, примеры

Оператор 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

См. также


Автор: OneMan (не зарегистрирован), дата: 10 июня, 2010 - 19:50
#permalink

instanceof можно использовать для проверки того, что переменная является массивом:

function is_array (a) {
    return (typeof a == "object") && (a instanceof Array);
}

Автор: ixth, дата: 16 сентября, 2010 - 17:06
#permalink

У вас вот тут вот очепятка: myString instanceof Objec // true


Автор: Lexi, дата: 25 сентября, 2010 - 21:13
#permalink

Следовало бы упомянуть про особенности работы с фреймами.


Автор: vtk (не зарегистрирован), дата: 27 октября, 2011 - 09:06
#permalink

ух ты. а я всегда думал что для такого наследования

Honda.prototype = new Car()

нужно еще указывать конструктор:

Honda.prototypу.constructor = Honda

а оно и так всё работает.


Автор: Mips, дата: 31 августа, 2013 - 12:43
#permalink

Для проверка типа переменной используйте

function typeOf(value) { return Object.prototype.toString.call(value).slice(8, -1); }

Автор: Гость (не зарегистрирован), дата: 29 октября, 2017 - 09:50
#permalink

да, только Вы забыли toLowerCase():
function typeOf(value) { return Object.prototype.toString.call(value).slice(8, -1).toLowerCase(); }


Автор: andypop, дата: 7 марта, 2014 - 10:41
#permalink

instanceof можно использовать для определения типа поля объекта, сравните

o={pl:[]};
var m=o.pl;
b=m instanceof Array;
console.log(b);//true
b=typeof m;
console.log(""+b)//Object

Автор: Гость (не зарегистрирован), дата: 7 марта, 2016 - 04:39
#permalink

почему

var s = '1';
(instanceof s)

даёт false ???
s - это же объект класса String, имеющий прототип, т.е.
String.prototype.asBool = function () {...}
s.asBool() - это сработает.


Автор: Гость (не зарегистрирован), дата: 11 декабря, 2017 - 10:15
#permalink

Hello, all.

I have a question about this example:

function is_array (a) {
    return (typeof a == "object") && (a instanceof Array);
}

Can I check the "a instanceof Array" only?
What for this verify: typeof a == "object"??

Заранее спасибо за ответ)


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
4 + 3 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum