Symbol.hasInstance

Добревідомий символ Symbol.hasInstance використовують, щоб визначити, чи конструктор розпізнає об'єкт як свій екземпляр. Цим символом можна налаштовувати поведінку оператора instanceof.

Атрибути поля Symbol.hasInstance
Доступний для запису ні
Доступний для переліку ні
Доступний для налаштування ні

Приклади

Змінена поведінка instanceof

Ви можете реалізувати свою власну поведінку instanceof, наприклад, так:

class MyArray {
  static [Symbol.hasInstance](instance) {
    return Array.isArray(instance)
  }
}
console.log([] instanceof MyArray); // true
function MyArray() { }
Object.defineProperty(MyArray, Symbol.hasInstance, {
  value: function(instance) { return Array.isArray(instance); }
});
console.log([] instanceof MyArray); // true

Перевіряємо екземпляр об'єкта

Таким самим чином, як ви перевіряєте, чи є об'єкт екземпляром класу, за допомогою ключового слова instanceof, можна використати Symbol.hasInstance для таких перевірок.

class Animal {
  constructor() {}
}

const cat = new Animal();

console.log(Animal[Symbol.hasInstance](cat)); // true

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

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

BCD tables only load in the browser

Див. також