ES6基本的語法 八 Class

2021-10-25 16:16:35 字數 1960 閱讀 5944

es7 class 的新特性

function

point

(x, y)

point.prototype.

tostring

=function()

;const p =

newpoint(1

,2);

// 使用 class 之後

class

point

tostring()

}const p =

newpoint(1

,2);

上面的**中定義了乙個「類」 類名是pointconstructor是它的方法體。所以p.constructor === point.prototype.constructor

class

point

tovalue()

tokeys()

// es7 中的寫法 es6 不支援

name =

"ccc"

}var

const

=new

point(1

,2);

// 等同於

point.prototype =

,tovalue()

,tokeys()

}

上面的 class 裡面定義了乙個tostring()方法,在point裡面寫的方法會直接寫在原型上。在 es6 在 class 裡面直接賦值會報錯,在 es7 中不會。

在前面加上 static 關鍵字,該方法不會被例項繼承,只能使用。這種就叫靜態方法

class

fun}

fun.

name()

;// 'myfun'

let fun =

newfun()

;fun.

name()

;// typeerror: fun.name is not a function

上面的**中,name方法前有static關鍵字,表示name是乙個靜態方法,可以fun.name()呼叫,而不是在fun呼叫。

class

fun}

class

boxextends

funbox.

name()

// 'myfun'

上面**中,fun有乙個靜態方法,box繼承fun之後可以呼叫這個方法。

可以使用super,呼叫父類的靜態方法。

class

fun}

class

boxextends

fun}

box.

name()

// 'myfun,ccc'

我在上面文章說了,在es7中可以直接static prop = ***寫靜態屬性,也可以myname = 'ccc'寫私有屬性

class

fun myname =

'ccc'

;// 私有屬性

es6隨手記 Class的基本語法

es6中的類 實際上是建構函式的另一種寫法 class aa var b new aa b.dostuff aaa 實際上類上的所有方法也都定義到了這個類的prototype屬性上 上面等同於 aa.prototype 類上定義的方法是不可列舉的,這個和es5中有所區別。所以可以使用下面方法 obj...

ES6之 class的基本語法(類)

es6之前,我們都是通過建構函式來生成例項物件 function point x,y point prototype.sum function let point newpoint 1 2 console.log point.sum 3es6 提供了更接近傳統語言的寫法,引入了 class 類 這個...

es6 基本語法

es6規定暫時性死區和let const語句不出現變數提公升,主要是為了減少執行時錯誤,防止在變數宣告前就使用這個變數,從而導致意料之外的行為。這樣的錯誤在 es5 是很常見的,現在有了這種規定,避免此類錯誤就很容易了。總之,暫時性死區的本質就是,只要一進入當前作用域,所要使用的變數就已經存在了,但...