為什麼要使用ES6類?
選擇使用類的一些原因:
- 語法更簡單,更不容易出錯。
- 使用新的語法比舊語法在實現繼承方面容易得多。
- class保護您免受無法使用new建構函式的常見錯誤(如果建構函式不是建構函式this的有效物件,則使建構函式丟擲異常)。
- 呼叫父原型的方法版本要簡單得多,如super.method(),而不是舊語法(ParentConstructor.prototype.method.call(this)或Object.getPrototypeOf(Object.getPrototypeOf(this)).method.call(this))
看看ES5:
// **ES5** var Person = function(first, last) { if (!(this instanceof Person)) { throw new Error("Person is a constructor function, use new with it"); } this.first = first; this.last = last; }; Person.prototype.personMethod = function() { return "Result from personMethod: this.first = " + this.first + ", this.last = " + this.last; }; var Employee = function(first, last, position) { if (!(this instanceof Employee)) { throw new Error("Employee is a constructor function, use new with it"); } Person.call(this, first, last); this.position = position; }; Employee.prototype = Object.create(Person.prototype); Employee.prototype.constructor = Employee; Employee.prototype.personMethod = function() { var result = Person.prototype.personMethod.call(this); return result + ", this.position = " + this.position; }; Employee.prototype.employeeMethod = function() { // ... }; |
而看看ES6的類:
// ***ES2015+** class Person { constructor(first, last) { this.first = first; this.last = last; } personMethod() { // ... } } class Employee extends Person { constructor(first, last, position) { super(first, last); this.position = position; } employeeMethod() { // ... } } |
Source: stackoverflow.com
相關文章
- 為什麼要虛擬化,為什麼要容器,為什麼要Docker,為什麼要K8S?DockerK8S
- 為什麼要謹慎使用Linux find命令?Linux
- 為什麼類裡面要定義靜態常量啊?
- [短文速讀-3] 內部匿名類使用外部變數為什麼要加final變數
- 為什麼要code reviewView
- 為什麼要寫作
- [每日一題]ES6中為什麼要使用Symbol?每日一題Symbol
- 為什麼說Java中要慎重使用繼承Java繼承
- Python是什麼?為什麼要掌握python?Python
- GC 為什麼要掛起使用者執行緒? 什麼愁什麼怨?GC執行緒
- 為什麼要避免在 Go 中使用 ioutil.ReadAll?Go
- 為什麼要學習Netty?Netty
- 為什麼要學習 RustRust
- 為什麼要學習 Julia
- 為什麼要指令重排序?排序
- 為什麼要財務自由
- 為什麼要學習 Vim?
- 為什麼 JavaScript 的 this 要這麼用?JavaScript
- 為什麼要謹慎使用Arrays.asList、ArrayList的subList?
- python為什麼用類Python
- Python到底是什麼?為什麼要學Python?Python
- Python優勢是什麼?為什麼要學習?Python
- 我為什麼要學技術
- 為什麼要“東數西算”?
- 為什麼要分庫分表?
- 為什麼還要記密碼密碼
- redis為什麼要提供pipeline功能Redis
- 前端為什麼要工程化?前端
- 為什麼要閱讀原始碼原始碼
- 序 為什麼要建立部落格
- [譯]為什麼要寫 super(props)
- 為什麼要貢獻開源
- 為什麼要加EventQueue.invokeLater
- 為什麼要特徵標準化特徵
- Linux是什麼系統?為什麼要學習Linux?Linux
- 為什麼要學習Python?Python可以做什麼事情?Python
- 什麼是Spring Boot?為什麼要學習Spring Boot?Spring Boot
- 為什麼CMS要為老年代預留空間?