Object.prototype.isPrototypeOf()

Сводка

Метод isPrototypeOf() проверяет, входит ли объект в цепочку прототипов другого объекта.

Обратите внимание: метод isPrototypeOf() отличается от оператора instanceof. Выражение "object instanceof AFunction" проверяет, присутствует ли в цепочке прототипов объекта object объект AFunction.prototype, а не сам объект AFunction.

Синтаксис

prototypeObj.isPrototypeOf(object)

Параметры

prototypeObj
Объект, проверяемый на каждую ссылку в цепочке прототипов аргумента object.
object
Объект, в чьей цепочке прототипов производится поиск.

Описание

Метод isPrototypeOf() позволяет вам проверять, существует ли объект в цепочке прототипов другого объекта.

Например, рассмотрим следующую цепочку прототипов:

function Fee() {
  // ...
}

function Fi() {
  // ...
}
Fi.prototype = new Fee();

function Fo() {
  // ...
}
Fo.prototype = new Fi();

function Fum() {
  // ...
}
Fum.prototype = new Fo();

Если позже вы создадите экземпляр объекта Fum и захотите проверить, что прототип Fi существует в цепочке прототипов Fum, вы можете сделать следующее:

var fum = new Fum();
// ...

if (Fi.prototype.isPrototypeOf(fum)) {
  // здесь безопасно что-то делать
}

Таким образом, вместе с оператором instanceof, это особенно пригождается, если у вас есть код, который может работать только с объектами, имеющими определённую цепочку прототипов, к примеру, чтобы он мог гарантировать, что в объекте присутствуют определённые методы или свойства.

Спецификации

Спецификация Статус Комментарии
ECMAScript 3-е издание. Стандарт Изначальное определение.
ECMAScript 5.1 (ECMA-262)
Определение 'Object.prototype.hasOwnProperty' в этой спецификации.
Стандарт
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Object.prototype.hasOwnProperty' в этой спецификации.
Стандарт

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также