有时候我们写了一个js库,里面有一些核心对象,我们希望在开发过程中这个核心对象不被修改,这时候就要防止该对象被篡改。Object上有三个方法可以使用
可以使用
Object.isExtensible(obj)来查看某个对象是否是可扩展的,返回是一个布尔值。
2.Object.seal(obj);
密封的对象是不可扩展的,在此基础上,他也不能删除属性,但是可以修改属性
这时候可以看到虽然给bar添加了属性test,但是仍然为undefined;虽然删除了属性name,但是name依然存在。同样这是在非严格模式下,严格模式下将抛出错误。
但是对该对象属性进行修改是可行的
可以使用
Object.isSealed(obj)来查看某个对象是否是密封的,返回是一个布尔值。
3.Object.freeze(obj)
冻结的对象是密封的,在此基础上,他也不能修改属性
这时候可以看到虽然给bar添加了属性test,但是仍然为undefined;虽然删除了属性name,但是name依然存在;修改了属性name但是也没有生效。同样这是在非严格模式下,严格模式下将抛出错误。
JS关于对象的安全性之扩展,密封,冻结
最新推荐文章于 2023-05-08 16:07:33 发布