【JS】之面向對象(類和對象的創建)

面向對象與面向過程的區別:

面向過程與面向對象優缺點
  優點 缺點
面向過程 性能比面向對象高,適合跟硬件聯繫很緊密的東西 沒有面向對象易維護,易複用和易擴展
面向對象 易維護,易複用,易擴展,用於面向對象有封裝,繼承和多態的特性,可以設計出低耦合的系統,使系統更加靈活,更加易於維護 性能比面向過程低

面向對象的思維特定就是:

        1)抽取(抽象)對象共有的屬性和行爲組織(封裝)成一個類(模板)

        2)對類進行實例化,獲取類的對象

ES6中的類和對象:

        ---》創建類

//創建一個star 明星類
class Star{
    //構造函數
    constructor(uname,age){
        this.uname=uname;
        this.age=age;
    }
}

//注意:
//類必須使用new關鍵字實例化對象
//創建實例:var James=new star();

       注意事項:

        1)通過class關鍵字創建類,類名定義首字母大寫

        2)類裏面有個constructor函數,可以接受傳遞過來的參數,同時返回實例對象

        3)constructor函數只要new 生成實例時,就會自動調用這個函數,如果不寫這個函數,類也會自動生成這個函數

        4)生成實例new不能省略

        5)最後注意語法規範,創建類 類名後面不需要加小括號 ,生成實例,類名後面需要添加小括號,構造函數不需要加function

     ---》類的繼承(extends)

      類的繼承的關鍵字是【extends】;當子類繼承父類的時候,實例化子類之後,子類可以使用父類的一些方法

class Father{
    constructor(){
    }
//父類的方法
    money(){
        console.log(100000);
    }
}

//子類繼承父類
class Son extends Father{
}
//實例化子類
var son=new Son();
son.money();

輸出結果:

       ---》super關鍵字

        用於調用父類上的函數,可以調用父類上的構造函數,也可以調用父類上的普通函數

       class Father {
            constructor(x, y) {
                this.x = x;
                this.y = y;
            }
            sum() {
                console.log(this.x + this.y);

            }
        }
        class Son extends Father {
            constructor(x, y) {
                super(x, y); //調用了父類中的構造函數
            }
        }
        var son = new Son(1, 2);
        var son1 = new Son(11, 22);
        son.sum();
        son1.sum();

輸出結果:

       super關鍵字調用父類中的普通函數

 <script>
        // super 關鍵字調用父類普通函數
        class Father {
            say() {
                return '我是爸爸';
            }
        }
        class Son extends Father {
            say() {
                // console.log('我是兒子');
                console.log(super.say() + '的兒子');
                // super.say() 就是調用父類中的普通函數 say()
            }
        }
        var son = new Son();
        son.say();
</script>

        繼承中的屬性或者方法查找原則:就近原則

        1)繼承中,如果實例化子類輸出一個方法,先看子類有沒有這個方法,如果有就先執行子類的

        2)繼承中,如果子類裏面沒有,就去查找父類中有沒有這個方法,如果有就執行父類中的這個方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章