gpt4 book ai didi

javascript - 如何在 JavaScript 中卡住嵌套对象?

转载 作者:行者123 更新时间:2023-11-28 03:32:54 26 4
gpt4 key购买 nike

我刚刚偶然发现了 Object.freeze() 函数。这似乎是一个相当不错的功能,但是如何使整个对象(包括嵌套对象)不可变?

例如,我可以在此处更改 innerProp:

const obj = { prop: { innerProp: 1 } };
obj.prop.innerProp = 5;
console.log(obj.prop.innerProp); // 5

是否也可以卡住嵌套对象? (ECMAScript 5/6)

最佳答案

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;
};

https://github.com/substack/deep-freeze

它是公共(public)领域,因此您不必提供信用:D

关于javascript - 如何在 JavaScript 中卡住嵌套对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58011509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com