Class 類

ES6提供了更接近傳統(tǒng)語(yǔ)言的寫法,引入了Class(類)這個(gè)概念簿姨,作為對(duì)象的模板距误,通過(guò)關(guān)鍵字class,可以定義類扁位,基本上准潭,ES6的class可以看成只是一個(gè)語(yǔ)法糖,它的絕大部分功能域仇,ES5都可以做到刑然,新的class寫法只是讓對(duì)象原型的寫法更加清晰, 更像買你想對(duì)象編程的語(yǔ)法而已
知識(shí)點(diǎn):
(1)class聲明類
(2)constructor定義構(gòu)造函數(shù)初始化
(3)extends繼承父類
(4)super調(diào)用腹肌構(gòu)造方法
(5)static定義靜態(tài)方法和屬性
(6)父類方法可以重寫
案例1:es5構(gòu)造函數(shù)創(chuàng)建對(duì)象

      // ES5構(gòu)造函數(shù)實(shí)例化對(duì)象
      function Person(name, age, sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
      }
      //添加方法
      Person.prototype.sayName = function () {
        console.log(this.name);
      };
      //實(shí)例化對(duì)象
      let p = new Person("張三", 18, "male");
      console.log(p.sayName());

案例2:es6 class創(chuàng)建對(duì)象

    // ES6 class 創(chuàng)建對(duì)象
      class Person {
        //構(gòu)造函數(shù) 名字不能和修改
        constructor(name, age, sex) {
          this.name = name;
          this.age = age;
          this.sex = sex;
        }
        //添加方法
        //方法必須使用該語(yǔ)法 不能使用es5的對(duì)象完整形式

        sayHi() {
          console.log(`我是${this.name},你好啊`);
        }
      }
      let p = new Person("lisi", 18, "female");
      console.log(p.sayHi());

靜態(tài)成員

        //靜態(tài)成員
        function Person() {}
        Person.name = "wangmei";
        Person.sayHi = function () {
          console.log("Hi");
        };
        let p = new Person();
        console.log(p.name); //undefined 也就是說(shuō)實(shí)例身上是沒(méi)有構(gòu)造函數(shù)對(duì)象身上的屬性的
        console.log(p.sayHi()); //Uncaught TypeError: p.sayHi is not a function 說(shuō)明實(shí)例身上沒(méi)有構(gòu)造函數(shù)對(duì)象身上的方法的 實(shí)例和構(gòu)造函數(shù)身上的屬性是不相通的

構(gòu)造函數(shù)身上的屬性是屬于函數(shù)對(duì)象的暇务,實(shí)例對(duì)象不能訪問(wèn)闰集,對(duì)于這樣的屬性,我們稱之為靜態(tài)成員,對(duì)于class而言般卑,被static標(biāo)記的成員是屬于class的,而不是實(shí)例對(duì)象的爽雄,如下所示:

      class Person {
        //靜態(tài)屬性
        static name = "static";
        static sayHi() {
          console.log("Hi");
        }
      }
      let p = new Person();
      console.log(p.name);//undefined
      console.log(p.sayHi);//undefined

案例3:es5 實(shí)現(xiàn)繼承

  function Person(name, age) {
        this.name = name;
        this.age = age;
      }
      //添加方法
      Person.prototype.sayHi = function () {
        console.log("Hi");
      };
      //   子類
      function Student(name, age, grade, score) {
        //通過(guò)call 讓Perosn的this指向Student的實(shí)例對(duì)象 繼承父類的name age屬性
        Person.call(this, name, age);
        this.grade = grade;
        this.score = score;
      }
      //設(shè)置子級(jí)構(gòu)造函數(shù)的原型
      Student.prototype = new Person();
      //   將子類的構(gòu)造器還原
      Student.prototype.constructor = Student;

      //生命子類的方法
      Student.prototype.study = function () {
        console.log("I love study");
      };
      //實(shí)例化子類對(duì)象
      let s = new Student("danny", 2, 1, 100);
      console.log(s);

案例4:es6 類繼承

    class Person {
        //構(gòu)造方法
        constructor(name, age) {
          this.name = name;
          this.age = age;
        }
        //父類的方法
        sayHi() {
          console.log(`Hi,我是${this.name}`);
        }
      }
      //   子類繼承自父類
      class Student extends Person {
        constructor(name, age, grade, score) {
          super(name, age);
          this.score = score;
          this.grade = grade;
          //子類的方法
        }
        study() {
          console.log("I love Studying");
        }
        eat() {
          console.log("I love eating");
        }
      }
      //實(shí)例化子類對(duì)象
      let s = new Student("lili", 12, 3, 100);
      console.log(s.name); //lili

從這兩個(gè)案例可以看出蝠检,es6的類繼承更簡(jiǎn)單,更切合面向?qū)ο缶幊讨课粒枰⒁獾氖翘舅绻宇愔械姆椒ǜ割愔幸捕x了,那我們是無(wú)法直接調(diào)用父類的同名方法的乘盖,相當(dāng)于重寫了父類的方法
案例5:es6中的get和set

  //class中的get和set
      class Person {
        get name() {
          console.log("name屬性被讀取了");
          return "11";
        }
        set name(newVal) {
          console.log("name屬性被修改了");
        }
      }
      let s = new Person();
      console.log(s.name);
      s.name = "你好";
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末焰檩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子订框,更是在濱河造成了極大的恐慌析苫,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異衩侥,居然都是意外死亡国旷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門茫死,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)跪但,“玉大人,你說(shuō)我怎么就攤上這事峦萎÷啪茫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵爱榔,是天一觀的道長(zhǎng)被环。 經(jīng)常有香客問(wèn)我,道長(zhǎng)搓蚪,這世上最難降的妖魔是什么蛤售? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮妒潭,結(jié)果婚禮上悴能,老公的妹妹穿的比我還像新娘。我一直安慰自己雳灾,他們只是感情好漠酿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著谎亩,像睡著了一般炒嘲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匈庭,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天夫凸,我揣著相機(jī)與錄音,去河邊找鬼阱持。 笑死夭拌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的衷咽。 我是一名探鬼主播鸽扁,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镶骗!你這毒婦竟也來(lái)了桶现?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鼎姊,失蹤者是張志新(化名)和其女友劉穎骡和,沒(méi)想到半個(gè)月后相赁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡即横,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年噪生,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片东囚。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡跺嗽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出页藻,到底是詐尸還是另有隱情桨嫁,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布份帐,位于F島的核電站璃吧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏废境。R本人自食惡果不足惜畜挨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望噩凹。 院中可真熱鬧巴元,春花似錦、人聲如沸驮宴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)堵泽。三九已至修己,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迎罗,已是汗流浹背睬愤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纹安,地道東北人尤辱。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钻蔑,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奸鸯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 在學(xué)習(xí) ES6 的 Class 知識(shí)之前我們需要先學(xué)習(xí) Object.defineProperty 方法咪笑,方...
    哇有米閱讀 1,038評(píng)論 0 3
  • (一) set 數(shù)據(jù)結(jié)構(gòu) ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類似于數(shù)組娄涩,但是成員的值都是唯一的窗怒,沒(méi)有重復(fù)的值映跟。...
    woow_wu7閱讀 1,076評(píng)論 1 1
  • class聲明 class 是 ES6 模仿面向?qū)ο笳Z(yǔ)言(C++, Java)提出的定義類的方法。形式類似 C++...
    faremax閱讀 251評(píng)論 0 0
  • 概述 JavaScript 語(yǔ)言中扬虚,生成實(shí)例對(duì)象的傳統(tǒng)方法是通過(guò)構(gòu)造函數(shù)努隙。ES6 提供了更接近傳統(tǒng)語(yǔ)言的寫法,引入...
    遼A丶孫悟空閱讀 450評(píng)論 0 8
  • class Point{}target:掌握es6的class相當(dāng)于es5的語(yǔ)法糖 基于在函數(shù)的原型鏈(需要掌握j...
    可愛(ài)的木頭閱讀 579評(píng)論 0 0