Object.prototype.isPrototypeOf()

Метод isPrototypeOf() перевіряє, чи існує об'єкт у ланцюжку прототипів іншого об'єкта.

isPrototypeOf() відрізняється від оператора instanceof.У виразі "object instanceof AFunction" ланцюжок прототипів об'єкта object перевіряється на AFunction.prototype, а не на сам об'єкт AFunction.

Синтаксис

prototypeObj.isPrototypeOf(object)

Параметри

object
Об'єкт, чий ланцюжок прототипів перевірятиметься.

Значення, що повертається

Булеве значення, що зазначає, чи присутній об'єкт, що викликав метод, у ланцюжку прототипів вказаного об'єкта.

Помилки, що викидаються

TypeError
Помилка TypeError викидається, якщо prototypeObj дорівнює undefined або null.

Опис

Метод isPrototypeOf() дозволяє перевірити, чи існує об'єкт у ланцюжку прототипів іншого об'єкта.

Приклади

Цей приклад демонструє, що Baz.prototype, Bar.prototypeFoo.prototype та Object.prototype присутні у ланцюжку прототипів об'єкта baz:

function Foo() {}
function Bar() {}
function Baz() {}

Bar.prototype = Object.create(Foo.prototype);
Baz.prototype = Object.create(Bar.prototype);

var baz = new Baz();

console.log(Baz.prototype.isPrototypeOf(baz)); // true
console.log(Bar.prototype.isPrototypeOf(baz)); // true
console.log(Foo.prototype.isPrototypeOf(baz)); // true
console.log(Object.prototype.isPrototypeOf(baz)); // true

Метод isPrototypeOf(), разом з оператором instanceof можуть стати в нагоді, коли ви маєте код, який працює тільки з об'єктами, похідними від певного ланцюга прототипів, наприклад, щоб гарантувати, що певні методи або властивості будуть присутні на цьому об'єкті.

Наприклад, перевіримо, чи походить об'єкт baz від Foo.prototype:

if (Foo.prototype.isPrototypeOf(baz)) {
  // виконати безпечні дії
}

Специфікації

Специфікація Статус Коментар
ECMAScript 3rd Edition (ECMA-262) Standard Початкове визначення.
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.prototype.isPrototypeOf' in that specification.
Standard
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.prototype.isPrototypeOf' in that specification.
Standard
ECMAScript Latest Draft (ECMA-262)
The definition of 'Object.prototype.isPrototypeOf' in that specification.
Draft

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
isPrototypeOfChrome Full support YesEdge Full support 12Firefox Full support 1IE Full support 9Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Див. також