class類 - static


不需要實例化類,即可直接通過該類來調用的方法,即稱之為“靜態方法”。將類中的方法設為靜態方法也很簡單,在方法前加上static關鍵字即可。這樣該方法就不會被實例繼承!

class Box{
    static a(){
        return "我是Box類中的,實例方法,無須實例化,可直接調用!"
    }
}
//通過類名直接調用
console.log(Box.a());//我是Box類中的,實例方法,無須實例化,可直接調用!

上面的代碼一,類Box的a方法前有static關鍵字, 表明該方法是一個靜態方法, 可以直接在Box類上調用。靜態方法只能在靜態方法中調用,不能在實例方法中調用。

class Box{
    static a(){
        return "我只允許被靜態方法調用哦!"
    }
    static b(){
        //通過靜態方法b來調用靜態方法a
        console.log(this.a());
    }
}
Box.b();//輸出:我只允許被靜態方法調用 哦

通過實例方法來調靜態方法會報錯:

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() {//父類Box的靜態方法
        return '我是父類的靜態方法a';
    }
}
class Desk extends 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM