Ecmascript 6 有没有办法拦截和修改内置类';什么是静态方法?

Ecmascript 6 有没有办法拦截和修改内置类';什么是静态方法?,ecmascript-6,Ecmascript 6,使用instanceof,我们可以执行以下操作: Number的新编号(1)实例//true 但我们不能这样做: 1 instanceof Number//false 由于ES6为我们提供了[Symbol.hasInstance],因此我们可以使用它创建一个新类,以使instanceof可以检查原语值。例如: 类MyNumber{ 静态[符号.hasInstance](x){ 返回typeof(x)==“object”?数量的x实例:typeof(x)==“Number” } } 常数a=1

使用
instanceof
,我们可以执行以下操作:

Number的新编号(1)实例//true
但我们不能这样做:

1 instanceof Number//false
由于ES6为我们提供了
[Symbol.hasInstance]
,因此我们可以使用它创建一个新类,以使
instanceof
可以检查原语值。例如:

类MyNumber{
静态[符号.hasInstance](x){
返回typeof(x)==“object”?数量的x实例:typeof(x)==“Number”
}
}
常数a=1
常数b=新编号(1)
MyNumber//true的实例
b MyNumber的实例//真

但是,我们是否可以截取并修改内置类的静态方法(
Number[Symbol.hasInsatnce]
),而不是创建另一个新类(
MyNumber
),类实际上是函数。因此,
Number
上的
Object.defineProperty
就可以了

Object.defineProperty(Number,Symbol.hasInstance{
值:函数(x){
返回typeof(x)==“object”?数量的x实例:typeof(x)==“Number”
}
});
console.log(1个instanceof Number)