使只读对象包装不易出错



我用以下代码为对象生成只读包装器

function readOnlyObject(obj) {
return new Proxy(obj, {
defineProperty: function(obj, key, desc) {return;},
set: function(obj, prop, val) {return;},
deleteProperty: function(obj, prop) {return;},
get: function(obj, prop, receiver) {
if (obj[prop] instanceof Object) {
return readOnlyObject(obj[prop]);
}
return Reflect.get(...arguments);
}
});
}

这与外部威胁的安全无关,只是为了防止我和我的同事在路上开枪自杀。是否有一个我忘记覆盖的代理函数,在传递和写入代理对象时可能会引起麻烦?

说明:有问题的对象被传递给运行时生成的业务逻辑代码——由非程序员在DSL中编写,然后转换为javascript;我必须保护这个物体不出错。根据需要传递包含数据的副本会很麻烦,因为每次业务逻辑有新的需求时,都需要接触和部署后端代码。

ssssssttttt。。。。。。有这个https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze

但是您甚至无法将属性添加到冻结的对象中。

--意见部分——

老实说,我不确定你在做什么。你们正在阻止自己成熟。我从来没有做过,也不需要它,不管任何因素。因为对我来说,无论是谁这样做,都犯了一个与重写全局对象属性同样可怕的错误。

最新更新