類相當於例項的原型,所有在類中定義的方法,都會被例項繼承。如果在乙個方法前,加上static
關鍵字,就表示該方法不會被例項繼承,而是直接通過類來呼叫,這就稱為「靜態方法」。
上面**中,es6class
foo
}
foo
.classmethod
()// 'hello'
var
foo
=new
foo();
foo
.classmethod
()
// typeerror: foo.classmethod is not a function
foo
類的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...