我正在尝试冻结 javascript 嵌套对象。由于我是 JS 新手,因此我很难冻结嵌套对象。
const obj = { prop: { innerProp: 1 } };
obj.prop.innerProp = 5;
console.log(obj.prop.innerProp); // 5
是否可以冻结嵌套对象?
我正在尝试冻结 javascript 嵌套对象。由于我是 JS 新手,因此我很难冻结嵌套对象。
const obj = { prop: { innerProp: 1 } };
obj.prop.innerProp = 5;
console.log(obj.prop.innerProp); // 5
是否可以冻结嵌套对象?
您可以使用Immutable.js,它是一个用于处理不可变值的库。此外,在性能方面,特别是如果您在项目中经常使用不可变变量,Immutable.js是一个不错的选择,因为deepFreeze
在性能方面成本更高。
您可以使用以下示例冻结嵌套对象
function deepFreeze (o) {
Object.freeze(o);
if (o === undefined) {
return o;
}
Object.getOwnPropertyNames(o).forEach(function (prop) {
if (o[prop] !== null
&& (typeof o[prop] === "object" || typeof o[prop] === "function")
&& !Object.isFrozen(o[prop])) {
deepFreeze(o[prop]);
}
});
return o;
};