Object.prototype.isPrototypeOf()
Сводка
Метод 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