#class是仿照其他語言,作為物件的模板,通過這個關鍵字,來定義類。 #實質是語法糖,可以通過建構函式來實現,例子:
class Point{
constructor(x,y){
this.x = x;
this.y = y;
}
toString(){
return '(' + this.x + ',' + this.y + ')';
}
}
複製程式碼
可以通過Object.assign方法向類來新增一個或者多個方法,例:
class Point {
constructor(){
// ...
}
}
Object.assign(Point.prototype, {
toString(){},
toValue(){}
});
複製程式碼
通過class構造的函式,必須使用new來呼叫。
例項的屬性除非顯示的定義在例項的本身(即class內使用this進行定義),否則就定義在原型上
類可以通過使用表示式的形式定義
const MyClass = class Me{
getClassName(){
return Me.name;
}
}
MyClass.name; //"Me"
Me.name //ReferenceError: Me is not defined
複製程式碼
這個類的名字是MyClass而不是Me,後者只能用在Class內部程式碼,指代當前類。可以看書Me只在內部定義,如果內部沒有用到,也可以把Me省略掉
類內部沒有變數提升
new Foo(); // 報錯
class Foo {}
複製程式碼
需要先定義才能使用