ES6構造函數class 和 ES5構造函數語法

  • 2020 年 4 月 18 日
  • 筆記

構造函數就是JavaScript程式定義好的函數,我們直接使用就可以,實際也是一種函數,構造函數專門用於生成定義對象,通過構造函數生成的對象,稱為實例化對象

構造函數分為兩種,一種是JavaScript程式定義好的構造函數,稱為內置構造函數,一種是程式設計師自己定義的構造函數,稱為自定義構造函數

構造函數和普通函數的區別
  1,構造函數一定要和關鍵詞new一起使用,new關鍵詞會自動的給構造函數定義一個對象,並且返回這個對象,我們只要對這個對象設定屬性,設定方法就可以了
  2,構造函數為了和其他函數區別,語法規範規定構造函數的函數名稱,第一個字母必須大寫,使用大駝峰命名法
  3,構造函數給對象定義屬性和方法的語法,與一般函數不同

ES5構造函數語法:

  //自定義構造函數
        function CrtObj(name,sex,age,addr){
            // 定義屬性
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.addr = addr;
            // 定義方法
            this.fun = function(){
                console.log(this.name,this.sex,this.age,this.addr);
            }
        }
        // 生成實例化對象
        const obj = new CrtObj('劉五','女',26,'北京');
        console.log(obj); //輸出實例化對象

 

ES6構造函數語法:ES6與ES5構造函數語法對比,其功能作用完全相同,只是語法不同。ES6構造函數新增class語法:

        class Fun{// ES6class方法定義構造函數
            //constructor是構造器,定義實例化對象的屬性和屬性值, ()中的是參數
            constructor (name,age,sex){
                this.name = name;
                this.age = age;
                this.sex = sex;
            }
            //定義方法,雖然沒聲明,但是也是定義在構造函數中的prototype中
            fAll(){
                console.log(this.name,this.age,this.sex);
            }
        }
        // 生成實例化對象
        const obj = new Fun('劉萌', 20, '女');
        console.log(obj);//輸出實例化對象
        obj.fAll();  //輸出方法

需要注意一點是ES6的class語法無法執行預解析,是不能被提前調用; ES5的function函數可以提前調用,但是只能調用屬性不能調用方法。