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()
позволяет вам проверять, существует ли объект в цепочке прототипов другого объекта.
Например, рассмотрим следующую цепочку прототипов:
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
, это особенно пригождается, если у вас есть код, который может работать только с объектами, имеющими определённую цепочку прототипов, к примеру, чтобы он мог гарантировать, что в объекте присутствуют определённые методы или свойства.
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-object.prototype.isprototypeof |
Совместимость с браузерами
BCD tables only load in the browser