中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ES6中class類的示例分析

發布時間:2022-03-24 14:09:06 來源:億速云 閱讀:166 作者:小新 欄目:web開發

這篇文章主要介紹了ES6中class類的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

class 類

通過class可以定義類,新的class寫法只是讓對象原型的寫法更加清晰,更像面向對象編程的語法而已。

  • 1 class  聲明類

  • 2 constructor  定義構造函數初始化

  • 3 extends  繼承父類

  • 4 super  調用父級構造方法

  • 5 static  定義靜態方法和屬性

  • 6 父類方法可以重寫

es5通過 構造函數實例化 對象的方法

    // 人
    function People(name, sex) {
      this.name = name;
      this.sex = sex;
    }
    // 這個height這種添加方式是屬于函數對象的,不屬于實例對象,這樣的屬性稱之為靜態成員
    People.height = '180';
    People.prototype.height1 = '100';
    // 添加方法
    People.prototype.play = function(){
      console.log('打籃球');
    }
    let zn = new People('zhangning', '男');
    zn.play();// 輸出 打籃球
    console.log(zn);
    console.log(zn.height);// 輸出 undefined 
    console.log(zn.height1);// 輸出 100,必須通過prototype添加才能添加到實例對象上

通過class實現

    class People{
      // 靜態屬性 static,對于static 標注的方法屬于類,不屬于實例對象
      static height = '100';
      static change(){
        console.log('我可以改變世界');
      }
      // 構造方法 名字不能更改(在使用new People的時候會自動執行實例對象上的constructor方法)       
      constructor(name, sex){
        this.name = name;
        this.sex = sex;
      }
      // 添加方法必須使用該語法,不能使用es5的完整形式(play: function(){} 這種形式不支持,必須使用play()形式)
      // 成員屬性
      play(){
        console.log('打籃球');
      }
    }
    let zn = new People('zhangning', '男');
    console.log(zn);
    console.log(zn.height);// undefined  static 標注的方法屬于類,不屬于實例對象
    console.log(People.height);// 100

使用es5構造函數實現繼承

    // 舉例 chinese 繼承 People 屬性
    function People(name, sex) {
      this.name = name;
      this.sex = sex;
    }
    People.prototype.play = function(){
      console.log('打LOL');
    }
    function Student(name, sex, like, height){
      // 通過call方法,改變this值,this指向chinese中的this,也就是chinese的一個實例對象
      People.call(this, name, sex);
      this.like = like;
      this.height = height;
    }
    // 設置子集構造函數原型
    Student.prototype = new People;// 這樣就會有父級的一個方法
    Student.prototype.constructor = Student;// 做一個校正,沒有這行代碼也無所謂
    // 聲明子類方法
    Student.prototype.photo = function(){
      console.log('去拍照');
    }
    // 實例化
    const zn = new Student('zhangning', '男', '打籃球', '187');
    console.log(zn)

使用es6 class 類 實現繼承 及 父類方法的重寫

    // 聲明父類
    class People{
      // 父類構造方法
      constructor(name, sex) {
        this.name = name;
        this.sex = sex;
      }
      // 父類成員屬性
      play(){
        console.log('打LOL');
      }
    }
    // 聲明子類 使用extends 繼承父類
    class Student extends People {
      // 構造方法
      constructor(name, sex, like, height){
        super(name, sex);// super 就是父類的constructor構造函數,這樣調用
        this.like = like;
        this.height = height;
      }
      photo(){
        console.log('去拍照');
      }
      // 對父類中的play方法進行重寫,子類是不能去調用父類的同名方法的,


      play(){
        // super(); 不允許,在普通的成員方法里面是不能出現super()去調用父類的同名方法的,會報錯,只能完全重寫
        console.log('我會打LOL,還會打籃球');
      }
    }
    const zn = new Student('zhangning', '男', '打籃球', '187');
    console.log(zn)

class 中 getter 和 setter 設置

    class People{
      get like(){
        return '打籃球';
      }
      set like(newVal){
        // 通過傳過來的newVal值,進行操作,改變 like
        console.log('改變like值');
      }
    }
    let p = new People();
    console.log(p.like)// 輸出 打籃球
    p.like = 'LOL';// 然后通過 set like 進行操作

感謝你能夠認真閱讀完這篇文章,希望小編分享的“ES6中class類的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乡城县| 永安市| 泸溪县| 波密县| 林芝县| 宁化县| 榕江县| 武平县| 涡阳县| 故城县| 九江县| 安福县| 兴海县| 五寨县| 富宁县| 鄱阳县| 东兴市| 墨竹工卡县| 聊城市| 泗洪县| 沈丘县| 陵川县| 曲松县| 桐乡市| 澄迈县| 阳泉市| 苏州市| 北票市| 米脂县| 华池县| 余江县| 桃园县| 华容县| 枣强县| 盈江县| 鄂伦春自治旗| 长汀县| 宁蒗| 新安县| 城固县| 饶阳县|