我在项目中使用Immutable.js并尝试不使用普通的JS结构。
但是我不确定将包含函数的对象转换为不可变对象是否有意义。
我们说MathUtility.js
:
export default {
sum (a, b) {
return a + b
},
min (a, b) {
return a - b
}
//etc. More utils methods
}
做这样的事情是否有意义:
export default Immutable.fromJS({
sum (a, b) {
return a + b
},
min (a, b) {
return a - b
}
//etc. More utils methods
})
从我的POV来看,它不是一个数据对象(很难从JS中的函数中不时分割数据)所以没有必要这样做,但我不确定。
由于
答案 0 :(得分:1)
不,我没有看到将这些转换为不可变对象的任何价值。事实上,这是一个相当大的缺点:你不能再直接调用这些实用函数了。
使用您的示例:
var utils = Immutable.fromJS({
sum (a, b) {
return a + b;
},
min (a, b) {
return a - b;
}
});
utils.sum; // => undefined
utils.get('sum'); // => function
utils.get('sum')(1, 2) // => 3
这非常尴尬的imho。