Сводка
Метод isPrototypeOf() проверяет, входит ли объект в цепочку прототипов другого объекта.
Обратите внимание: метод isPrototypeOf() отличается от оператора instanceof. Выражение "object instanceof AFunction" проверяет, присутствует ли в цепочке прототипов объекта object объект AFunction.prototype, а не сам объект AFunction.
Синтаксис
prototypeObj.isPrototypeOf(obj)
Параметры
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' в этой спецификации. |
Стандарт |
Совместимость с браузерами
| Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
| Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |