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"??

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


 
Поиск по сайту
Содержание

Учебник javascript

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

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

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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