我正在学习es6所以我试图将这些代码从es5转换为es6.
我知道如何在es5中创建一个实例计数器.在id建A.prototype及counter建成的A本身.当我构建一个实例时A,它将触发counter++设置id.因此,它实现inheritance counter了行动.
var A = (function () {
function A() {
this.id = ++A.counter;
console.log(this.id);
}
A.counter = 0;
return A;
}());
a = new A(); // 1
b = new A(); // 2
c = new A(); // 3
Run Code Online (Sandbox Code Playgroud)
如果我在es6工作,我该如何实现相同的功能?
另外两个答案是完全正确的.但是如果你想获得超级疯狂的ES6,你可以为这些房产制造吸气剂.
class A {
constructor() {
this._id = A.counter;
console.log(this.id);
}
get id() {
return this._id;
}
static get counter() {
A._counter = (A._counter || 0) + 1;
return A._counter;
}
}
a = new A() // <- 1
b = new A() // <- 2
c = new A() // <- 3
Run Code Online (Sandbox Code Playgroud)
这样你的计数器和id都是只读的,你的计数器每次访问时都会自动递增...而且它在类定义中都是整齐的,而不是需要走出它.
不是说你需要这样做......但似乎你正在学习ES6,这个例子展示了一些关于你可以用它做什么的巧妙技巧.