Class的基本語法(筆記)

js與es6對比

1.js中沒有類(class)這個概念,通過構(gòu)造函數(shù)的方式實例化對象。

function Point(x, y) {
    this.x = x;
    this.y = y;
}
Point.prototype.toString = function() {
    return '(' + this.x + ', ' + this.y + ')';
};
var p = new Point(1, 2);

2.es6中同窘,引入類這個概念。

  • constructor方法晨缴,就是構(gòu)造方法。(對應(yīng)上面js代碼中的構(gòu)造函數(shù)Point)峡捡。
  • this指向?qū)嵗瘜ο蟆?/li>
  • toString是類原型對象上的方法击碗。
  • 類不存在變量提升筑悴。
class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
 //注意定義方法的時候,這里不用function關(guān)鍵字哦
    toString() {
        return '(' + this.x + ', ' + this.y + ')';
    }
}

實例化的時候延都,也是使用new雷猪。跟構(gòu)造函數(shù)的用法一樣。

var p = new Point(1, 2);

類的方法

1.類所有的方法都是定義在原型對象prototype上的晰房,包括constructor也是類原型對象上的方法求摇。

class Point {
  constructor() {
    // ...
  }
  toValue() {
    // ...
  }
}
// 等同于
Point.prototype = {
  constructor() {},
  toValue() {},
};

2.在類的實例上面調(diào)用方法,其實就是調(diào)用原型上的方法殊者。

class B {}
let b = new B();
//實例化對象的constructor 是在__proto__的与境,不過原型鏈中,
//在自身上找不到的方法或者屬性時猖吴,會原型上找摔刁。
//即b.constructor==b.__proto__.constructor
b.constructor === B.prototype.constructor // true

3.類的內(nèi)部所有定義的方法,都是不可枚舉的海蔽。
4.屬性可以使用表達(dá)式共屈,例如下面的類的方法名就叫做“sayHello”

let methodName = 'sayHello';
class Square {
  constructor() {
  }
  [methodName]() {
    // ...
  }
}

constructor 方法

1.constructor方法是類的默認(rèn)方法,通過new命令生成對象實例時党窜,自動調(diào)用該方法拗引。一個類必須有constructor方法,如果沒有顯式定義幌衣,一個空的constructor方法會被默認(rèn)添加矾削。

class Point {
}

// 等同于
class Point {
  constructor() {}
}

2.constructor方法,直接指向“類”的本身。(與es5中一致)

console.log(Point===Point.prototype.constructor) //true

類的實例

1.通過new來實例化對象豁护,不加會報錯哼凯。

// 報錯
var point = Point(2, 3);

// 正確
var point = new Point(2, 3);

2.實例化的時候,在類的constructor中通過this定義的屬性楚里,是實例對象自身的方法断部。而在類中定義的方法(例如上面的toString方法),則會掛在實例對象原型__proto__上班缎。

image.png

get和set

get取值函數(shù)蝴光,set存值函數(shù)。(一般用不到吝梅,懶得寫虱疏,知道有這么回事得了~~)

靜態(tài)方法

在方法上加static關(guān)鍵字惹骂,就是“靜態(tài)方法”苏携。

  • 可以直接通過類調(diào)用。
  • 靜態(tài)方法中的this指向的是類对粪,而不是實例右冻,所以不會被實例繼承装蓬。
class Foo {
  static classMethod() { //靜態(tài)方法
    return 'hello';
  }
}
Foo.classMethod() // 'hello'
  • 父類的靜態(tài)方法,可以被子類繼承纱扭。
  • 靜態(tài)方法也是可以從super對象上調(diào)用的牍帚。
class Foo {
  static classMethod() {
    return 'hello';
  }
}

class Bar extends Foo {
  static classMethod() {
    return super.classMethod();
  }
}

Bar.classMethod() // "hello"

實例屬性的新寫法

實例屬性一般在constructor的通過this定義,也可以定義在類的最頂層乳蛾。

class Par{
   bb="hello"; //實例的屬性可以在頂層定義暗赶,不用加this
   constructor (){
       this.aa=1;
  }
}

var p=new Par();
console.log(p.bb) // hello

靜態(tài)屬性

靜態(tài)屬性就是類自身的屬性。

class Par{
    constructor (){
     //....
    }
}
Par.aa="haha"; //aa是靜態(tài)屬性
console.log(Par.aa) //"haha"

目前肃叶,只有這種寫法可行蹂随,因為 ES6 明確規(guī)定,Class 內(nèi)部只有靜態(tài)方法因惭,沒有靜態(tài)屬性≡浪現(xiàn)在有一個提案提供了類的靜態(tài)屬性,寫法是在實例屬性的前面蹦魔,加上static關(guān)鍵字激率。

class Par{
    // 新寫法
    static  aa="haha"; 
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市勿决,隨后出現(xiàn)的幾起案子乒躺,更是在濱河造成了極大的恐慌,老刑警劉巖剥险,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聪蘸,死亡現(xiàn)場離奇詭異,居然都是意外死亡表制,警方通過查閱死者的電腦和手機健爬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來么介,“玉大人娜遵,你說我怎么就攤上這事∪蓝蹋” “怎么了设拟?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長久脯。 經(jīng)常有香客問我纳胧,道長,這世上最難降的妖魔是什么帘撰? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任跑慕,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘核行。我一直安慰自己牢硅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布芝雪。 她就那樣靜靜地躺著减余,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惩系。 梳的紋絲不亂的頭發(fā)上位岔,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音堡牡,去河邊找鬼赃承。 笑死,一個胖子當(dāng)著我的面吹牛悴侵,可吹牛的內(nèi)容都是我干的瞧剖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼可免,長吁一口氣:“原來是場噩夢啊……” “哼抓于!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浇借,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤捉撮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后妇垢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巾遭,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年闯估,在試婚紗的時候發(fā)現(xiàn)自己被綠了灼舍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡涨薪,死狀恐怖骑素,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刚夺,我是刑警寧澤献丑,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站侠姑,受9級特大地震影響创橄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜莽红,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一妥畏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦咖熟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至薪韩,卻和暖如春确沸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背俘陷。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工罗捎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拉盾。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓桨菜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捉偏。 傳聞我的和親對象是個殘疾皇子倒得,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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