javascript - "const something = () => ({..."箭头函数模式

标签 javascript ecmascript-6

第一种方式:

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 的模式有名称吗?我们在什么场景下使用这种模式?

我将它简化为第二段代码,仍然有效。好像效果一样?

最佳答案

每次创建 Component 实例时,第一个示例都会创建一个新对象(和一个新的 log 函数)。

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

关于javascript - "const something = () => ({..."箭头函数模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59391856/

相关文章:

javascript - jQuery 和 "hash"有问题吗?

javascript - 使用 ES6 语法导入一个包作为另一个包的扩展

JavaScript 在日期范围和返回正确格式之间循环

javascript - 如何在每个函数中使用循环对多个函数进行异步处理

javascript - 显示表格内容时出现问题

javascript - React - useEffect() 中出现错误。这是否会使页面上的所有内容都进入无限循环?

javascript - 如何阻止类在函数中可点击

javascript - 从图像边缘创建路径

javascript - 搜索元素,包括根和后代

javascript - 在 React 中如何更新数组中的多个复选框值?