CBl*_*lew 0 javascript closures class ecmascript-6
可以围绕构造函数创建一个闭包,以保存实例的唯一ID:
const MyObject = (() => {
let id = 0;
return function() {
this.id = id++;
};
})();
Run Code Online (Sandbox Code Playgroud)
使用类语法如何实现相同的目的?有没有一种方法可以围绕类的constructor函数创建一个闭包?
是的,使用类表达式可以执行以下操作:
const MyObject = (() => {
let id = 0;
return class MyObject {
constructor() {
this.id = id++;
}
};
})();
console.log(new MyObject().id);
console.log(new MyObject().id);
console.log(new MyObject().id);Run Code Online (Sandbox Code Playgroud)
或者,您也可以使用常规的类声明来做到这一点。
const MyObject = (() => {
let id = 0;
class MyObject {
constructor() {
this.id = id++;
}
}
return MyObject;
})();
console.log(new MyObject().id);
console.log(new MyObject().id);
console.log(new MyObject().id);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
685 次 |
| 最近记录: |