Object.prototype.isPrototypeOf()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Сводка

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

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

Синтаксис

prototypeObj.isPrototypeOf(object)

Параметры

prototypeObj

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

object

Объект, в чьей цепочке прототипов производится поиск.

Описание

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

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

js
function Fee() {
  // ...
}

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

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

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

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

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

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

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

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

Specification
ECMAScript Language Specification
# sec-object.prototype.isprototypeof

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

BCD tables only load in the browser

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