Сводка
Метод 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 |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |