es6 Class 的靜態方法

2021-08-15 07:22:57 字數 1740 閱讀 5706

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

class

foo

}

foo

.classmethod

()// 'hello'

var

foo

=new

foo();

foo

.classmethod

()

// typeerror: foo.classmethod is not a function

上面**中,es6foo類的classmethod方法前有static關鍵字,表明該方法是乙個靜態方法,可以直接在foo類上呼叫(foo.classmethod()),而不是在foo類的例項上呼叫。如果在例項上呼叫靜態方法,會丟擲乙個錯誤,表示不存在該方法。

注意,如果靜態方法包含this關鍵字,這個this指的是類,而不是例項。

class

foo

static

baz

()

baz

()

}

foo

.bar

()// hello

上面**中,靜態方法bar呼叫了this.baz,這裡的this指的是foo類,而不是foo的例項,等同於呼叫foo.baz。另外,從這個例子還可以看出,靜態方法可以與非靜態方法重名。

父類的靜態方法,可以被子類繼承。

class

foo

}

class

barextends

foo

bar

.classmethod

()// 'hello'

上面**中,父類foo有乙個靜態方法,子類bar可以呼叫這個方法。

靜態方法也是可以從super物件上呼叫的。

class

foo

}

class

barextends

foo

}

bar

.classmethod

()// "hello, too"

es6 class靜態方法以及繼承

寫法 通過使用class關鍵字,定義乙個類 定義 類 的方法的時候,前面不需要加上function這個關鍵字,直接把函式定義放進去了就可以了。另外,方法之間不需要逗號分隔,加了會報錯。class內的方法必須通過new關鍵字之後才能呼叫,若直接呼叫則會報錯。使用new關鍵字後,和es5建構函式相同 c...

es6 Class 的私有方法

私有方法是常見需求,但 es6 不提供,只能通過變通方法模擬實現。一種做法是在命名上加以區別。class widget 私有方法 bar baz 上面 中,bar方法前面的下劃線,表示這是乙個只限於內部使用的私有方法。但是,這種命名是不保險的,在類的外部,還是可以呼叫到這個方法。另一種方法就是索性將...

ES6 Class語法介紹

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