首页 > 解决方案 > 这种自我引用风格是可接受的还是反模式的?

问题描述

我最近通过反复试验发现我可以创建像这样引用自己的模块(我正在使用 React,所以这是 ES6),它们看起来工作得很好(请参阅在 'CollectionManager' 中使用 'CollectionManger' '):

export const CollectionManager = {
  collections: [],

  createCollection: () => {
      let collection = {id: Math.random()};
      collection.doSomething = () => {
        console.log(`Doing: ${collection.id}`);
      };
      CollectionManager.collections.push(collection);
    }
  }
};

对于我想要一个管理自身实例的对象的特殊情况,我真的很喜欢这种语法。这似乎比我见过的其他进行自我引用的方式(getter/setter,或类,甚至“this”)更直接,更简单,但我以前从未见过这种模式,我也没有知道这是否是因为它有点新,或者我只是偶然发现了一些碰巧看起来有效但在某种程度上是一个非常糟糕的主意的垃圾。

问:这可以接受吗?如果不是,为什么?

标签: javascriptreact-nativeecmascript-6

解决方案


推荐阅读