我正在复制一个尝试学习ES6的例子但是我遇到了编译错误:
Unexpected token (2:5)
似乎是指count = 0;
我做错了什么?
class Counter {
count = 0;
constructor() {
setInterval(function() {
this.tick();
}.bind(this), 1000);
}
tick() {
this.count ++;
console.log(this.count);
}
}
答案 0 :(得分:17)
在ES2015中,当使用class
语法时,您需要在构造函数或其中一个方法中定义实例变量(有一个提议用于下一次迭代,ES2016,以允许您的语法:{ {3}})
class Counter {
constructor() {
this.count = 0;
setInterval(function() {
this.tick();
}.bind(this), 1000);
}
tick() {
this.count++;
console.log(this.count);
}
}
var c = new Counter();
查看小提琴:
答案 1 :(得分:0)
也许这是编译器问题。检查您正在使用的Babel版本。
在我的情况下,我错过了babel-preset-stage-0
依赖。
答案 2 :(得分:0)
晚了3年,所以您可能知道了,但是我将count变量放在了构造函数中
class Counter {
constructor(count = 0) {
this.count = count
setInterval(function() {
this.tick();
}.bind(this), 1000);
}
tick() {
this.count ++;
console.log(this.count);
}
}
let counter = new Counter;
counter.tick()
通过调用tick函数赋予更多控制权
class Counter {
constructor(count = 0) {
this.count = count;
}
tick() {
let count = this.count;
setInterval(function() {
console.log(count++);
}, 1000);
}
}
let counter = new Counter;
// counter.tick()