最近又在 复习 js 知识,一遍又一遍,每遍都会有新的知识学到,新的理解。加油~
Static
静态数据类型,静态方法通常用于创建实用程序函数
- 被 static 修饰过的 属性 和 方法
- 不能被
class
的实例化对象调用 - 不管在
class
里面还是class
外面,需要通过类名.
属性 / 方法名 的形式调用 静态方法
调用同一个class
中的其他静态方法,可使用this
关键字。静态方法
内调用不是静态方法
或属性
不可以使用this
,this
当前指向的是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