1. JavaScript 類 class
(1). ES6引入了一種新的聲明類的語法
- 使用class關鍵詞來聲明類。
- 使用constructor()來初始化屬性的實例。
- 調用類中的方法語句為:objectName.methodName(args)
如:class Animal {
constructor (name) { this.name = name; };
getName() { return this.name };
};
let cat = new Animal('cat');
console.log(cat.getName()); // 'cat'
- 類class是一種特殊的函數類型。
如:console.log(typeof Animal); // function
- cat對象既是Animal的實列,也是Object的實列。
如:console.log(cat instanceof Animal); // true
console.log(cat instanceof Object); // true
(2). 類與自定義類型的區別
- 函數聲明可以吊裝(即先調用,后聲明。參考JavaScript 自學筆記10),類卻不能吊裝,必須先聲明,后調用。
如:let cat = new Animal('cat'); // 直接報錯Uncaught ReferenceError: Animal is not defined
// 必須先聲明Animal的類,然後才能new Animal
class Animal {
constructor (name) { this.name = name; };
getName() { return this.name };
};
let cat = new Animal('cat'); // 正確格式
- 在strict模式下,類裏的所有代碼都會被自動運行。
- 類裏的所有方法都不能被枚舉non-enumerable。
- 調用類的構造器卻不使用new操作器會導致報錯。
如:let dog = Animal('dog'); // TypeError: Cannot call a class as a function