對於es6
我很新。以下是我的簡單Student
類與接受2個參數的構造函數。我通過在構造函數簽名本身中調用函數來分配默認值,當參數未被傳遞時。在構造函數中分配默認值時出現ES6類型錯誤
index.js:9Uncaught TypeError: this.defaultRno is not a function
at new Student (index.js:9)
at Object.<anonymous> (index.js:21)
at __webpack_require__ (bootstrap f01272b…:555)
當我更改類似下面的構造,是沒有看到錯誤:
constructor(regNo = -1, name = 'unknown') {
this.regNo = regNo;
this.name = name;
}
UPDATE: 開始以同樣的方式
class Student {
defaultRno =() => -1;
defaultName =() => "unknown";
/**
* The default constructor
*/
constructor(regNo = this.defaultRno(), name = this.defaultName()) {
this.regNo = regNo;
this.name = name;
}
setRegNo = (rno = this.defaultRno()) => this.regNo = rno;
setName = (name = this.defaultName()) => this.name = name;
displayConsole =() => console.log(`Reg.No# ${this.regNo}\nName: ${this.name}`);
}
// create student object
var stu = new Student();
stu.displayConsole();
這與下面的錯誤導致默認值與函數一起使用。上面檢查setRegNo
和setName
。我發現它不適用於構造函數。
在參數給構造進行評價時,缺省應用,該對象不完全構造,並且仍然缺少像'defaultRno'方法。有沒有理由不能只寫'constructor(regNo = -1,name =「unknown」)'? – 2017-05-09 05:20:37
這不是ES6。您正在使用實驗性的轉換器插件,並且您不明白類字段語法的作用。 – Bergi
類體中的箭頭函數不會按照您想要的方式工作。但是,您可以使用簡寫方法聲明,如'setRegNo(){}'。 – Marty