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)代码>