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)) {
  // виконати безпечні дії
}

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

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

BCD tables only load in the browser

Див. також