**定义:**不需要实例化类,即可该类来调用的方法,称为静态方法。在方法前加上static关键字即可,该方法就不会被实力继承。静态方法只能在静态方法中调用,不能在实例中调用。
直接通过类名调用
class Box{
static a (){
return 'hello,xk'
}
}
// 直接通过类名调用
console.log(Box.a());
通过实例方法来调静态方法会报错
class Box{
static a(){
return "我只允许被静态方法调用哦!"
}
b(){
console.log(this.a());//TypeError: this.a is not a function
}
}
var obj=new Box();
obj.b();
父类的静态方法,可以被子类继承。
class Box {
static a (){
return '我是父类静态方法'
}
}
class Desk extend Box{}
// 子类Desk可以直接调用父类的静态方法a
console.log(Desk.a())
若想通过子类的静态方法调用父类的静态方法,需要从super对象上调用
class Box {
static a() {
return '我是通过super来调取出来的';
}
}
class Desk extends Box {
static a(){
return super.a();
}
}
console.log(Desk.a());
静态属性指的是 Class 本身的属性, 即Class.propname, 而不是定义在实例对象( this) 上的属性
class Box{
constructor(){
this.name="实例属性"
}
}
Box.prop1="静态属性1";
Box.prop2="静态属性2";
console.log(Box.prop1,Box.prop2);//静态属性1 静态属性2