本文实例讲述了javascript防篡改对象。分享给大家供大家参考,具体如下:
JavaScript中对象内置有多个属性Configurable,Writable,Enumerable,Value,Get和Set,来控制属性的行为。同样的ES5也有几个方法,来指定对象的行为。我们知道,javascript中的对象是可以共享的,也是默认可拓展的:
//一旦将对象设置防篡改,就不能撤销了 //众所周知,一般的对象是可以随意拓展的 var person = {name:'liufang'}; person.age = 22; document.write(person.age+"<br>");//22
我们可以添加、删除或者修改其他的属性或者方法。但是这也会导致一些问题,比如多人开发时,某些属性被人为修改,造成工程上的麻烦。这就促使了防篡改对象的诞生。防篡改对象有三个级别,分别是不可拓展对象、密封对象和冻结对象。
不可拓展对象
先来说说不可拓展对象吧,可以通过就普通对象设置为不可拓展对象,来使新添加的属性无效:
//防拓展对象 Object.preventExtensions(person);//设置为防拓展对象 person.smallName = 'ff'; document.write(person.smallName+"<br>");//undefined //说明不能添加新属性 //检测是否为可拓展对象 document.write(Object.isExtensible(person)+"<br>");//false //虽然防拓展对象不能添加属性,但是可以删除属性 delete person.age; document.write(person.age+"<br>");//undefined ,已经删除成功
可以看到,虽然不可拓展对象可以防止新添加属性,却不能阻止他人删除属性,当然也不能阻止修改了。所以引出了第二个等级的密封对象。
密封对象
密封对象就是在不可拓展对象的基础上添加一条规则,也就是不能删除属性。
//密封对象 //在不可拓展的基础上也不能删除 var people = {name:'liufang'}; Object.seal(people);//将对象密封 delete people.name; document.write(people.name+"<br>");//liufang ,说明不能删除 people.name = "tyq";//虽然不能删除,但是可以修改 document.write(people.name+"<br>");//tyq ,说明修改成功 //检测 document.write(Object.isSealed(people)+"<br>");//true
可以看出,密封对象虽然防止了删除,但是还是无法阻止修改,所以就有了最高级别的限制,也就是冻结对象。
冻结对象
被冻结的对象既不能拓展,也不能删除和修改。
//冻结对象 //不能拓展,不能删除,不能修改 var man = {name:'tyq'}; Object.freeze(man); //检测 document.write(Object.isFrozen(man));//true
最后要注意的就是,一旦对象被设置放篡改对象,则不能撤销,所以需要慎重考虑。
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
更新日志
- 廖也欧《面朝大海》[Hi-Res][24bit 48kHz][FLAC/分轨][170.14MB]
- s13T1夺冠五人名单都有谁 s13T1夺冠五人名单一览
- 英雄联盟T1战队队长都有谁 T1战队所有队长介绍
- skt历届战队成员都有哪些 skt历届战队成员名单盘点
- 妙音唱片《大热唱片3》[WAV+CUE]
- 费玉清《跟着地球旋转》滚石时代经典复刻[正版原抓WAV+CUE]
- 罗文甄妮-射雕英雄传(AMCD)(限量版)[WAV+CUE]
- 《巫师4》定档2025再添佐证:参演人员曝光 老将回归
- 辣眼睛 美女COS《黑神话:悟空》比基尼版金池长老
- 外媒称PS5pro违背承诺:《蜘蛛侠2》根本没法4K60帧
- 令晴 Lynn《The Make》[320K/MP3][44.47MB]
- 令晴 Lynn《The Make》[Hi-Res][24bit 48kHz][FLAC/分轨][295.42MB]
- 雷婷《移情别恋HQⅡ》头版限量编号[低速原抓WAV+CUE][1G]
- FUNDAMENTAL.1989-感觉号渡轮【SONY】【WAV+CUE】
- 上山安娜.1986-上山安娜【EMI百代】【WAV+CUE】