es6 class靜態方法以及繼承

2021-10-10 05:34:16 字數 2239 閱讀 9679

寫法

通過使用class關鍵字,定義乙個類;定義「類」的方法的時候,前面不需要加上function這個關鍵字,直接把函式定義放進去了就可以了。另外,方法之間不需要逗號分隔,加了會報錯。

class內的方法必須通過new關鍵字之後才能呼叫,若直接呼叫則會報錯。使用new關鍵字後,和es5建構函式相同;

class

father

children()

` }

} console.

log(father.

children()

)//報錯

let p =

newfather()

console.

log(p.

children()

)//姓名:小明

//還可以寫成這樣

class

father

} father.prototype.

children

=function()

` }

console.

log(father.

children()

)//報錯

let p =

newfather()

console.

log(p.

children()

)//姓名:小明

當面試官詢問不通過new關鍵字怎麼呼叫class內方法時候,我們可以告訴他通過prototype也是可以呼叫的

class

father

children()

` }

} console.

log(

'prototype'

,father.prototype.

children()

)//prototype 姓名:undefined

class內也可以通過static來定義自己的靜態方法和靜態屬性,則該方法/屬性不會被例項繼承,而是直接通過類來呼叫

class

father

static

children()

} console.

log(father.

children()

)//姓名:三兒

console.

log(father.age)

//姓名:18

let p =

newfather()

console.

log(p.age)

//undefined

console.

log(p.

children()

)//報錯

繼承

class在繼承時使用extends關鍵字,子類必須在constructor方法中呼叫super方法,否則新建例項時會報錯。這是因為子類沒有自己的this物件,而是繼承父類的this物件,然後對其進行加工。如果不呼叫super方法,子類就得不到this物件。

//沒有呼叫super方法

class

father

getname()

` }

}class

children

extends

father

getage()

` }

}let p1 =

newchildren()

//報錯

//使用super方法

class

father

getname()

` }

}class

children

extends

father

getage()

` }

}let p1 =

newchildren()

console.

log(p1.

getname()

)//姓名:小明

console.

log(p1.

getage()

)//年齡:18

es6 Class 的靜態方法

類相當於例項的原型,所有在類中定義的方法,都會被例項繼承。如果在乙個方法前,加上static關鍵字,就表示該方法不會被例項繼承,而是直接通過類來呼叫,這就稱為 靜態方法 class foo foo classmethod hello var foo new foo foo classmethod t...

es6 class以及類的繼承

class miaov print let mm new miaov 1,2 mm.print 2同時值得注意的是typeof miaov 會返回function 所以class 只是乙個語法糖 miaov中的constructor方法是構造方法 this關鍵字代表的是例項物件 定義在class中的...

ES6 Class語法介紹

參考文章 ecmascript 6 入門 概述 基本上,es6 的class可以看作只是乙個語法糖,它的絕大部分功 能,es5 都可以做到,新的class寫法只是讓物件原型的寫法更加清晰 更像物件導向程式設計的語法而已。舉個栗子 es5 function point x,y point.protot...