ES6——靜態屬性與靜態方法


靜態方法只能寫在class內,constructor外。通過static關鍵字聲明

靜態屬性只能寫在class外,通過 類名.屬性名 = 屬性值 聲明

 

            //靜態屬性與靜態方法(ES6明確規定,Class內部只有靜態方法,沒有靜態屬性 )
            
            //1.不會被類實例所擁有的屬性與方法,只是類自身擁有
            //2.只能通過類調用
            
            //通過static關鍵字聲明一個靜態方法
            
            class Car{
                constructor(){
                    Car.totalCar += 1;
                    this.speed = 0;
                }
                
                speedUp(){
                    this.speed += 1;
                }
                
                static repair(car){
                    if(!car.speed){
                        car.speed = 0;
                    }
                    
                    console.log(car);
                }
            }
            
            //靜態方法只能通過類去訪問,不能通過實例去訪問的
            Car.repair({
                color:'#f00'
            });
            //靜態方法跟普通方法可以重名
            
            
            //靜態屬性只能通過 類名.屬性名 = 屬性值;
            //靜態屬性可以增加一些配置項等等
            Car.totalCar = 0;  //記錄生成了多少個Car對象
            //直接掛在類上面,跟程序的耦合性降低
            Car.config = {
                wheel:4,
                color:'#000'
            }
            
            
            
            
            //直接方法靜態屬性: 類名.屬性名
            new Car()
            console.log(Car.totalCar);
            

 

 

應用:

            //靜態屬性經常這樣使用,把各個類相關的內容全部掛到靜態屬性上面,方便取值
            class Profession{
                
            }
            
            class Character{
                constructor(pfs){
                    this.pfs = pfs;
                }
            }
            
            Character.config = {
                profession:{
                    '咒術師':1,
                    '弓箭手':2
                }
            }
            
            new Character(Character.config.profession['咒術師'])
            
            
            
            //靜態方法的應用:一般會提供一個公共的類相關的方法
            //比如把一個程序員類轉換成一個普通人的類
            class Person{
                static format(programmer){
                    programmer.haveGirlFriend = true;
                    programmer.hair = true;
                }
            }
            
            class Programmer{
                constructor(){
                    this.haveGirlFriend = false;
                    this.hair = false;
                }
            }
            
            const programmer = new Programmer();
            
            console.log(programmer);
            
            Person.format(programmer);
            
            console.log(programmer);
            

 


免責聲明!

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



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