首页 > 解决方案 > 视频中的可组合箭头函数示例?

问题描述

在观看视频教程时,主持人推荐了可组合的工厂函数,而不是使用绑定或箭头函数,但我想我已经看到了一个问题,想知道我是否理解正确,这里是代码:

const createDragon = element => ({
  breathe() {
    return `abcd efgh ${element}`
  }
})

const newDragon = createDragon('fire');
console.log(newDragon.breathe());

与使用类语法相比,这种方式的缺点是 newDragon 对象将永远设置为“火”作为它的元素并且要更改它,您必须创建一个新对象?

如果它是一个具有元素属性的类实例,那么您可以只为该属性重新分配一个新值,我明白了吗?

标签: javascriptclassecmascript-6

解决方案


是的,在工厂参数上使用闭包(并且不提供 setter 方法),element本质上是一个常量。这种模式非常适合在函数式编程中创建不可变对象。对于经典的 OOP 来说不是那么多。


推荐阅读