【发布时间】:2020-02-12 18:11:50
【问题描述】:
我想知道纯类是否有意义(作为一个概念)?
例如,约束是:
无继承(仅组合)
所有依赖都在构造函数或方法中传递
例如:
class Elem {
constructor(el) {
this.el = el;
}
get html() {
return this.el.innerHTML;
}
get cls() {
return this.el.className.split(' ');
}
set cls(arr) {
this.el.className(arr.join(' '));
}
hide() {
this.el.style.display = 'none';
}
}
const appEl = document.getElementById('app');
const app = new Elem(appEl);
app.cls = ['flex', 'h100'];
app.hide();
只是想知道这样的约束是否会增加类似于纯函数的好处?
更新
我认为上面的例子很糟糕,因为我猜this.el 住在其他地方(在 dom 中),但是呢:
class One {
constructor() {
this.val = 1;
}
add(val) {
return this.val + val;
}
}
const one = new One;
one.add(6);
【问题讨论】:
-
在底层它们只是函数,JS 中不存在类,它只是语法糖。但要回答你的问题,是的,它可以提供一层抽象,通常这是一件好事..
-
您提到的所有约束都与纯函数无关?此外,您的示例类绝对不是纯粹的,因为它的
clssetter 和hide方法会产生副作用。 -
我想知道您是否可以考虑使类具有与纯函数相同的好处(更容易测试、更清晰等)的约束
标签: javascript node.js functional-programming