es6-Class 類
阿新 • • 發佈:2019-02-20
Class 的基本語法
通過class關鍵字,可以定義類
class寫法讓物件原型的寫法更清晰、更像面向物件程式設計的語法
通過建構函式生成例項物件:
//es5寫法: function Point(x,y){ this.x = x; this.y = y; } Point.prototype.toString = function(){ return "("+ this.x + ',' + this.y+")"; }
var p = new Point(x,y)
//es6寫法: Class Point{ constructor(x,y){ this.x = x; this.y = y; } toString(){ return '('+ this.x + '```,' + this.y + ')'; } }es6定義一個類,裡面有constructor方法,就是構造方法,this關鍵字代表例項物件。 就是:es5的建構函式Point ,對應es6的Point類的構造方法。
Point類還定義了toString方法, 在類中定義方法是,不需要加“function” 關鍵字, 方法之間不需要加逗號分隔;
es6中的類,完全可以看作建構函式的另一種寫法。
class Point{ ... } typeof Point // "function" Point === Point.prototype.constructor // true
這個表明,類的資料型別就是函式,類本身就指向建構函式。
使用時,也是直接使用new命令,跟建構函式的用法一毛一樣。
2.嚴格模式
類和模組的內部,預設都是嚴格模式
3.constructor方法
1.類中的constructor方法是其預設方法,通過new例項化時,自動呼叫該方法,若為空,則自動新增空的constructor方法
2.constructor 預設返回例項物件(this),這裡可以指定返回其它物件
3.使用new
4.類的例項物件
1.使用new
2.例項的屬性,若非直接定義在例項本身,則為全部定義在原型上(es6 中 即為class上)
3.同es5, 類的例項共享同一個原型物件
5.Class表示式
1.可使用表示式形式定義類 (const MyClass = class Me{}); 此時類名為MyClass,Me則只能在Class內部可用
2.立即執行:
let person = new Class{ constructor(name){ this.name = name; } sayName (){ alert(this.name) } }("summer"); person.sayName();//summer
6.不存在變數提升
不同於es5: 必須要先生命,才能呼叫或繼承
7.私有方法和私有屬性
1.