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