Symbol.hasInstance的理解

来源:互联网 发布:淘宝网电视机 编辑:程序博客网 时间:2024/05/29 01:51

Symbol.hasInstance方法很多文章都说这个方法扩展了类的构造函数,这个理解起来有点抽象。下面我通过例子进行讲解

简单点的:这是在网上找的例子:

class Even {
static [Symbol.hasInstance](obj) {
return Number(obj) %2 ===0;
}
}

1 instanceofEven// false
2 instanceofEven// true
12345 instanceofEven// false

这里我们先理解

1:Symbol.hasInstance 是Even的一个方法。

2:他重写了instanceof

所以当运行12345instanceofEven 的时候

实际运行的方式是:调用了Even类的Symbol.hasInstance方法参数是12345

实际的调用过程就是Even (Symbol.hasInstance)(12345)

难点的:

var foo = new Array();

class Even {
static [Symbol.hasInstance](obj) {
returnobj instanceof Array;
}
}
1 instanceof new MyClass() // false

[1, 2, 3] instanceof new MyClass() // true


原创粉丝点击