javascript如何实现防篡改对象-创新互联
小编给大家分享一下javascript如何实现防篡改对象,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
创新互联建站是专业的临桂网站建设公司,临桂接单;提供网站建设、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行临桂网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!具体如下:
JavaScript中对象内置有多个属性Configurable,Writable,Enumerable,Value,Get和Set,来控制属性的行为。同样的ES5也有几个方法,来指定对象的行为。我们知道,javascript中的对象是可以共享的,也是默认可拓展的:
//一旦将对象设置防篡改,就不能撤销了 //众所周知,一般的对象是可以随意拓展的 var person = {name:'liufang'}; person.age = 22; document.write(person.age+"
");//22
我们可以添加、删除或者修改其他的属性或者方法。但是这也会导致一些问题,比如多人开发时,某些属性被人为修改,造成工程上的麻烦。这就促使了防篡改对象的诞生。防篡改对象有三个级别,分别是不可拓展对象、密封对象和冻结对象。
不可拓展对象
先来说说不可拓展对象吧,可以通过就普通对象设置为不可拓展对象,来使新添加的属性无效:
//防拓展对象 Object.preventExtensions(person);//设置为防拓展对象 person.smallName = 'ff'; document.write(person.smallName+"
");//undefined //说明不能添加新属性 //检测是否为可拓展对象 document.write(Object.isExtensible(person)+"
");//false //虽然防拓展对象不能添加属性,但是可以删除属性 delete person.age; document.write(person.age+"
");//undefined ,已经删除成功
可以看到,虽然不可拓展对象可以防止新添加属性,却不能阻止他人删除属性,当然也不能阻止修改了。所以引出了第二个等级的密封对象。
密封对象
密封对象就是在不可拓展对象的基础上添加一条规则,也就是不能删除属性。
//密封对象 //在不可拓展的基础上也不能删除 var people = {name:'liufang'}; Object.seal(people);//将对象密封 delete people.name; document.write(people.name+"
");//liufang ,说明不能删除 people.name = "tyq";//虽然不能删除,但是可以修改 document.write(people.name+"
");//tyq ,说明修改成功 //检测 document.write(Object.isSealed(people)+"
");//true
可以看出,密封对象虽然防止了删除,但是还是无法阻止修改,所以就有了最高级别的限制,也就是冻结对象。
冻结对象
被冻结的对象既不能拓展,也不能删除和修改。
//冻结对象 //不能拓展,不能删除,不能修改 var man = {name:'tyq'}; Object.freeze(man); //检测 document.write(Object.isFrozen(man));//true
最后要注意的就是,一旦对象被设置放篡改对象,则不能撤销,所以需要慎重考虑。
以上是“javascript如何实现防篡改对象”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站建设公司行业资讯频道!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页标题:javascript如何实现防篡改对象-创新互联
文章源于:http://myzitong.com/article/hppso.html