由于js共享的本质,开发人员很可能会意外地修改别人的代码。所有ECMAScript5可以定义防纂改对象。
注意:一旦把对象定义为防篡改,就无法撤销了。
防篡改对象有三个级别,分别是不可拓展对象、密封对象和冻结对象。
1.不可扩展对象
Object.preventExtensions(person);//设置为防拓展对象
设置成不可扩展对象就不能再给对象添加属性和方法了。
Object.isExtensible(person);//用来确定对象是否可扩展。
2.密封对象
在不可扩展对象的基础上,又进一步加深了防篡改程度。
Object.seal(person);//将对象密封
这样使得不能删除属性和方法。
Object.isSealed(person);
检测对象是否被密封。
3.冻结的对象
在密封对象的基础上,又进一步加深了防篡改的程度。
Object.freeze(man);
这样使得不能修改属性和方法。
Object.isFrozen(man)
用来检测是否被冻结了。
对于js库作者而言,冻结对象很有用。冻结对象能防止人意外地修改库中的核心对象。