ES6 static 关键字 及 Symbol.hasInstance 方法

最近又在 复习 js 知识,一遍又一遍,每遍都会有新的知识学到,新的理解。加油~

Static

静态数据类型,静态方法通常用于创建实用程序函数

  • 被 static 修饰过的 属性 和 方法
    • 不能被class的实例化对象调用
    • 不管在class里面还是class外面,需要通过类名. 属性 / 方法名 的形式调用
    • 静态方法调用同一个class中的其他静态方法,可使用 this关键字。
    • 静态方法内调用不是静态方法属性不可以使用 thisthis当前指向的是class本身,而不是实例化对象
    • 可以被继承,继承后也是通过上面所述方法调用

只是一个使用总结,详细请看
https://blog.csdn.net/weixin_39628105/article/details/111101607

Symbol.hasInstance

用于判断某对象是否为某构造器的实例。

因此你可以用它自定义 instanceof 操作符在某个类上的行为。

  • 所以也可以实现对基本数据类型的检测,同时instanceof的类型检测也不再是绝对的正确
class myString{
	static [Symbol.hasInstance](val){
		return typeof val === 'string';
	}
}
"111" instanceof myString;  // true

Symbol.toPrimitive

是一个内置的 Symbol 值,它是作为对象的函数值属性存在的,当一个对象转换为对应的原始值时,会调用此函数。

  • 在对象转换成基本数据类型的时候
    • 先调用 Symbol.toPrimitive 方法
    • 在调用 valueOf 方法
    • 最后调用 toString 方法
let a = {
    [Symbol.toPrimitive]() {
        return 3
    },
    valueOf() {
        return 5;
    },
    toString() {
        return 8;
    }
}
 a + 10 //  13 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值