此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Symbol.hasInstance

基线 广泛可用

自 2017年4月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

Symbol.hasInstance 用于判断某对象是否为某构造器的实例。因此你可以用它自定义 instanceof 操作符在某个类上的行为。

尝试一下

class Array1 {
  static [Symbol.hasInstance](instance) {
    return Array.isArray(instance);
  }
}

console.log([] instanceof Array1);
// Expected output: true
Symbol.hasInstance 的属性特性
可写
可枚举
可配置

示例

你可实现一个自定义的instanceof 行为,例如:

js
class MyArray {
  static [Symbol.hasInstance](instance) {
    return Array.isArray(instance);
  }
}
console.log([] instanceof MyArray); // true

规范

规范
ECMAScript® 2027 Language Specification
# sec-symbol.hasinstance

浏览器兼容性

参见