class

  • 寫法
class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}
  • 1 注意
    • 類的所有方法都定義在類的prototype屬性上面
    • 類的內(nèi)部所有定義的方法蟋字,都是不可枚舉的
    • 定義“類”的方法的時(shí)候呛占,前面不需要加上function這個(gè)關(guān)鍵字
    • 類的方法之間不需要逗號(hào)分隔挪拟,加了會(huì)報(bào)錯(cuò)
  • 2 類的constructor方法:
    1 當(dāng)類沒有constructor方法時(shí)歧斟,會(huì)添加空的constructor方法
    2 constructor默認(rèn)返回this對(duì)象肴茄,與es5的構(gòu)造函數(shù)是一樣的
  • 2.1 類的實(shí)例屬性
    1 實(shí)例屬性可以寫在constructor中晌畅,也可以寫在最頂部
    class foo {
      bar = 'hello';
      baz = 'world';
    
      constructor() {
        // ...
      }
    }
    
  • 3 類的實(shí)例對(duì)象
    • 生成類的實(shí)例時(shí)必須使用new關(guān)鍵字,且類不能自己調(diào)用;
  • 4 類的原型對(duì)象
    • get和set關(guān)鍵字對(duì)屬性設(shè)置存取函數(shù),攔截該屬性的行為
    class MyClass {
      constructor() {
        // ...
      }
      get prop() {
        return 'getter';
      }
      set prop(value) {
        console.log('setter: '+value);
      }
    }
    
    let inst = new MyClass();
    
    inst.prop = 123;
    // setter: 123
    
    inst.prop
    // 'getter'
    
    • 里面的方法默認(rèn)綁定this為類的實(shí)例寡痰,可是如果單獨(dú)取出該方法抗楔,會(huì)丟失this指針棋凳,在react中就是如此。為了指向正確的this谓谦,可以使用箭頭函數(shù)贫橙,bind方法和proxy代理
  • 5.1 靜態(tài)方法
    • 1 使用static關(guān)鍵字來描述類的靜態(tài)方法,在靜態(tài)方法中this指向類本身
    • 2 子類可以繼承父類的靜態(tài)方法
    • 3 在子類的方法中可以使用super來調(diào)用父類的靜態(tài)方法
  • 5.2 靜態(tài)屬性
    • 1 目前只有這種寫法反粥,有個(gè)提案用static來代表靜態(tài)屬性
    class Foo {
    }
    
    Foo.prop = 1;
    Foo.prop // 1
    
  • 5.3 私有屬性和私有方法
    • 有個(gè)提案使用#表示私有屬性和私有方法
  • 6 new.target屬性
    • 1 該屬性一般用在構(gòu)造函數(shù)之中卢肃,返回new命令作用于的那個(gè)構(gòu)造函數(shù)
    class Rectangle {
      constructor(length, width) {
        console.log(new.target === Rectangle);
        this.length = length;
        this.width = width;
      }
    }
    
    var obj = new Rectangle(3, 4); // 輸出 true
    
  • 2 如果子類繼承父類時(shí),new.target會(huì)返回子類
class Rectangle {
 constructor(length, width) {
   console.log(new.target === Rectangle);
   // ...
 }
}

class Square extends Rectangle {
 constructor(length) {
   super(length, length);
 }
}

var obj = new Square(3); // 輸出 false
  • 7 類的繼承
    • 使用extends關(guān)鍵字實(shí)現(xiàn)繼承
    • 在繼承時(shí),必須在使用this之前調(diào)用super方法
      這是因?yàn)樽宇愖约旱膖his對(duì)象才顿,必須先通過父類的構(gòu)造函數(shù)完成塑造莫湘,得到與父類同樣的實(shí)例屬性和方法, 然后再對(duì)其進(jìn)行加工郑气,加上子類自己的實(shí)例屬性和方法幅垮。如果不調(diào)用super方法,子類就得不到this對(duì)象尾组。
  • 7.1 super關(guān)鍵字
    • super當(dāng)函數(shù)使用,只能在constructor中使用,此時(shí)代表父類的構(gòu)造函數(shù)
    • 作為對(duì)象使用,在普通方法中指向父類的原型對(duì)象(拿不到父類實(shí)例對(duì)象的屬性),在靜態(tài)方法中,指向父類本身;
    • 子類普通方法中通過super調(diào)用父類的方法時(shí)忙芒,方法內(nèi)部的this指向當(dāng)前的子類實(shí)例。在子類的靜態(tài)方法中通過super調(diào)用父類的方法時(shí)讳侨,方法內(nèi)部的this指向當(dāng)前的子類呵萨,而不是子類的實(shí)例。
    • 由于this指向子類實(shí)例跨跨,所以如果通過super對(duì)某個(gè)屬性賦值潮峦,這時(shí)super就是this,賦值的屬性會(huì)變成子類實(shí)例的屬性勇婴。
class A {
  constructor() {
    this.x = 1;
  }
}

class B extends A {
  constructor() {
    super();
    this.x = 2;
    super.x = 3;
    console.log(super.x); // undefined
    console.log(this.x); // 3
  }
}

let b = new B();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忱嘹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子耕渴,更是在濱河造成了極大的恐慌拘悦,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件橱脸,死亡現(xiàn)場(chǎng)離奇詭異础米,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)慰技,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來组砚,“玉大人吻商,你說我怎么就攤上這事≡愫欤” “怎么了艾帐?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵乌叶,是天一觀的道長。 經(jīng)常有香客問我柒爸,道長准浴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任捎稚,我火速辦了婚禮乐横,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘今野。我一直安慰自己葡公,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布条霜。 她就那樣靜靜地躺著催什,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宰睡。 梳的紋絲不亂的頭發(fā)上蒲凶,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音拆内,去河邊找鬼旋圆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛矛纹,可吹牛的內(nèi)容都是我干的臂聋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼或南,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼孩等!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起采够,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤肄方,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蹬癌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體权她,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年逝薪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隅要。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡董济,死狀恐怖步清,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤廓啊,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布欢搜,位于F島的核電站,受9級(jí)特大地震影響谴轮,放射性物質(zhì)發(fā)生泄漏炒瘟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一第步、第九天 我趴在偏房一處隱蔽的房頂上張望疮装。 院中可真熱鬧,春花似錦雌续、人聲如沸斩个。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽受啥。三九已至,卻和暖如春鸽心,著一層夾襖步出監(jiān)牢的瞬間滚局,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工顽频, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留藤肢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓糯景,卻偏偏與公主長得像嘁圈,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蟀淮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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

  • class的基本用法 概述 JavaScript語言的傳統(tǒng)方法是通過構(gòu)造函數(shù)最住,定義并生成新對(duì)象。下面是一個(gè)例子: ...
    呼呼哥閱讀 4,095評(píng)論 3 11
  • Class 的基本語法 簡介 JavaScript 語言中怠惶,生成實(shí)例對(duì)象的傳統(tǒng)方法是通過構(gòu)造函數(shù)涨缚。下面是一個(gè)例子。...
    huilegezai閱讀 522評(píng)論 0 0
  • (一) set 數(shù)據(jù)結(jié)構(gòu) ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set策治。它類似于數(shù)組脓魏,但是成員的值都是唯一的,沒有重復(fù)的值通惫。...
    woow_wu7閱讀 1,076評(píng)論 1 1
  • 1.簡介 JavaScript 語言中茂翔,生成實(shí)例對(duì)象的傳統(tǒng)方法是通過構(gòu)造函數(shù)。下面是一個(gè)例子履腋。 上面這種寫法跟傳統(tǒng)...
    無跡落花閱讀 570評(píng)論 0 0
  • 看到別人珊燎,一年的讀書記錄。回頭看看自己俐末,覺得,真是沒法比奄侠。就像那句話買書如山倒讀書如抽絲卓箫,自己一年,買了不少書垄潮,但...
    治服己心閱讀 230評(píng)論 0 0