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

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

Специфікація
ECMAScript (ECMA-262)
The definition of 'Symbol.hasInstance' in that specification.

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
hasInstanceChrome Full support 50Edge Full support 15Firefox Full support 50IE No support NoOpera Full support 37Safari Full support 10WebView Android Full support 50Chrome Android Full support 50Firefox Android Full support 50Opera Android Full support 37Safari iOS Full support 10Samsung Internet Android Full support 5.0nodejs Full support 6.5.0
Full support 6.5.0
Full support 6.0.0
Disabled
Disabled From version 6.0.0: this feature is behind the --harmony runtime flag.

Legend

Full support  
Full support
No support  
No support
User must explicitly enable this feature.
User must explicitly enable this feature.

Див. також