javascript - "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 模式有名称吗?我们在什么场景下使用这种模式?
我将它简化为第二段代码,仍然有效。它似乎工作相同?
解决方案
第一个示例在每次创建实例时创建一个新对象(和一个新函数) 。log
Component
第二个示例每次都重用同一个(因此任何更改都log
将被共享)。
推荐阅读
- mongodb - $lookup 使用多个条件 mongodb java 聚合
- python - Pandas - 访问单元格中的单元格
- css - 是否可以使用 CSS 浮动属性对齐类似于设计的框?
- c - C中的缓冲区互斥锁和条件变量
- reactjs - 在 Grid 上更新时如何为 DevExtreme React Grid 设置状态
- r - 提取在 R 数据帧的另一个变量的两个因子水平上至少出现两次的变量的值
- c# - MuPdf 库是否具有 unicode 或文本搜索功能?
- python - 什么会使此 BST 代码中的插入方法起作用?
- ios - 如何将 UIView 底部锚点向右移动到底部导航栏?
- .htaccess - 在子目录中安装 Codeigniter 4 并保持域通用 URL 结构