首页 > 解决方案 > "const something = () => ({..." 箭头函数模式

问题描述

第一种方式:

const logger = () => ({
  log(msg) {
    console.log(msg)
  }
})
class Component {
  constructor() {
    Object.assign(this, logger())
  }
}

第二种方式:

const logger = {
  log(msg) {
    console.log(msg)
  }
}
class Component {
  constructor() {
    Object.assign(this, logger)
  }
}

现在,两者之间有什么区别?

const obj = new Component()
obj.log('what is the difference?')

我在人们的代码中多次看到第一个模式。这种 IFFE 模式有名称吗?我们在什么场景下使用这种模式?

我将它简化为第二段代码,仍然有效。它似乎工作相同?

标签: javascriptecmascript-6

解决方案


第一个示例在每次创建实例时创建一个新对象(和一个新函数) 。logComponent

第二个示例每次都重用同一个(因此任何更改都log将被共享)。


推荐阅读