首页 > 解决方案 > 在 JavaScript 中传递冻结对象

问题描述

例子

考虑以下程序:

const engine = {"power": 200};
const car = {"brand": "Fiat", "motor": engine};
// Code using car object..

假设在我的程序中更改汽车属性的值没有意义。任何这样做的尝试都会导致程序的错误状态。我想冻结汽车对象,可以通过以下方式完成:

Object.freeze(car); // Make car immutable

问题

仍然可以修改引擎属性,因为引擎没有被冻结:

car.motor.power = 400 // Valid assigment. 

冻结汽车时,我还想冻结引擎和任何参考引擎都有..等。

问题

在 JavaScript 中传递冻结对象的正确方法是什么? 是否有任何语言功能/通用方法可以做到这一点?

标签: javascriptoopimmutability

解决方案


推荐阅读