JavaScript的寫類方式(6)


時間到了2015年6月18日,ES6正式發布了,到了ES6,前面的各種模擬類寫法都可以丟掉了,它帶來了關鍵字 class,extends,super。

 

ES6的寫類方式

// 定義類 Person
class Person {

  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  setName(name) {
    this.name = name;
  }

  getName() {
    return this.name;
  }

  toString() {
    return 'name: ' + this.name + ', age: ' + this.age;
  }

}

// 創建實例對象
var p = new Person('Backus', 35);
p instanceof Person; // true

以上定義了一個類,constructor 是構造器,這點和 Java 不同,Java的構造器名和類名相同。

 

和 Java 多象啊,再看看繼承

class Man extends Person {
  constructor(name, age, school) {
    super(name, age); // 調用父類構造器
    this.school = school;
  }

  setSchool(school) {
    this.school = school;
  }

  getSchool() {
    return this.school;
  }

  toString() {
    return super.toString() + ', school:' + this.school; // 調用父類的toString()
  }
}

var man = new Man('張三', '30', '光明中學');
man instanceof Man; // true
man instanceof Person; // true
console.log(man);

以上代碼中,constructor 和 toString 方法中,都出現了 super 關鍵字,它指代父類的實例(即父類的 this 對象)。 之前 ES5 有個 Object.getPrototypeOf 來獲取父類的原型對象

 

 

可以繼續閱讀:

JavaScript繼承方式(1)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM