javascript防篡改对象实例详解

前端之家收集整理的这篇文章主要介绍了javascript防篡改对象实例详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了javascript防篡改对象。分享给大家供大家参考,具体如下:

JavaScript中对象内置有多个属性Configurable,Writable,Enumerable,Value,Get和Set,来控制属性的行为。同样的ES5也有几个方法,来指定对象的行为。我们知道,javascript中的对象是可以共享的,也是默认可拓展的:

");//22

我们可以添加删除或者修改其他的属性或者方法。但是这也会导致一些问题,比如多人开发时,某些属性被人为修改,造成工程上的麻烦。这就促使了防篡改对象的诞生。防篡改对象有三个级别,分别是不可拓展对象、密封对象和冻结对象。

不可拓展对象

先来说说不可拓展对象吧,可以通过就普通对象设置为不可拓展对象,来使新添加属性无效:

");//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相关内容可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》及《用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

原文链接:https://www.f2er.com/js/40093.html

猜你在找的JavaScript相关文章