防篡改对象

JavaScript多人开发协作过程中,很可能会意外篡改他人代码。防篡改对象,通过不可扩展、密封、冻结来解决这个问题。

需要特别注意的是:一旦把对象定义为防篡改,就无法撤销了。

1、不可扩展对象

1 var person = {
2     name: "Person Name"
3 }
4 Object.preventExtensions(person);
5 
6 person.age = 29;
7 alert(person.age);  // undefined

通过 Object.isExtensible([Object]) 可以确定对象是否可以扩展。 true 可以扩展, false 不可以扩展。

不可扩展的对象,不能新增属性。

2、密封的对象

 1 var person = {
 2     name: "Person Name"
 3 }
 4 Object.seal(person);
 5 
 6 person.age = 29;
 7 alert(person.age); // undefined
 8 
 9 delete person.name;
10 alert(person.name); // Person Name

通过 Object.isSealed([Object]) 可以确定对象是否被密封了。

被密封的对方,不能新增属性,也不能删除属性。

3、冻结的对象

 1 var person = {
 2     name: "Person Name"
 3 }
 4 Object.freeze(person);
 5 
 6 person.age = 29;
 7 alert(person.age); // undefined
 8 
 9 delete person.name;
10 alert(person.name); // Person Name
11 
12 person.name = "New Name";
13 alert(person.name); // Person Name

通过 Object.isFrozen([Object]) 来检测对象是否被冻结。

被冻结的对象,不能新增属性,并不能删除属性,也不能修改属性。

4、总结

冻结 > 密封 > 不可扩展

 
不可扩展✖️✔️✔️
密封✖️✖️✔️
冻结✖️✖️✖️
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值