javascript - ES2015 (ES6) 类中类构造函数的闭包

标签 javascript class ecmascript-6 closures

可以在构造函数周围创建一个闭包来保存实例的唯一 ID:

const MyObject = (() => {
  let id = 0;

  return function() {
    this.id = id++;
  };
})();

如何使用类语法实现相同的效果?有没有办法围绕类的构造函数函数创建一个闭包?

最佳答案

是的,使用 class expressions你可以这样做:

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);

<小时/>

或者您也可以使用常规类声明来实现。

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);

关于javascript - ES2015 (ES6) 类中类构造函数的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45889708/

相关文章:

javascript - 对象中丢失上下文

javascript - 如何使用纯 javascript 获取 DIV 中的所有 id

Javascript:用所需的类剥离标签

javascript - 使用 babel CLI 进行转译

javascript - 尝试从 tr 标签获取类名 - 'undefined'

c# - DataAccess 项目中类的命名约定是什么?

javascript - TypeScript 类装饰器创建与构造函数具有相同类型参数的方法

javascript - JS - iOS 上的 Safari - 如何获取视口(viewport)比例属性

javascript - 记住浏览器后退按钮上最后选择的单选按钮

javascript - Bootstrap 轮播在鼠标悬停或单击之前不会滑动