我应该只对具有函数的对象使用不变性吗?
Should I use immutability for objects with functions only?
我在我的项目中使用 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 中的函数中分离数据)所以没有必要这样做,但我不确定。
谢谢
不,我看不到将它们转换为不可变对象的任何价值。事实上,有一个相当大的缺点:你不能再直接调用这些实用函数。
使用您的示例:
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
恕我直言,这很尴尬。
我在我的项目中使用 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 中的函数中分离数据)所以没有必要这样做,但我不确定。
谢谢
不,我看不到将它们转换为不可变对象的任何价值。事实上,有一个相当大的缺点:你不能再直接调用这些实用函数。
使用您的示例:
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
恕我直言,这很尴尬。