使用JavaScript怎么创建防篡改对象?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1 不可扩展对象
默认情况下,所有的对象都是可扩展的,即可以随意地添加属性和方法。现在,使用 Object.preventExtensions(person)
方法后,对象就不可以扩展咯:
<script type="text/javascript"> var person = {name: "deniro"}; // person.age = 29; // console.log(person.age); console.log(Object.isExtensible(person));//true Object.preventExtensions(person); person.age = 15; console.log(person.age);//undefined console.log(Object.isExtensible(person));//false </script>
运行结果:
在非严格模式下,为对象添加新成员会静默失败;而在严格模式下,会抛出错误。
虽然对象不能添加新成员,但仍然可以修改和删除已有的成员。而 Object.isExtensible()
可以确定对象是否可扩展。
2 密封的对象
密封的对象不可以扩展,而且已有的成员的[[Configurable]]的特性也被设置为 false,这意味着不能删除这个对象的属性和方法咯,但属性的值可以修改:
<script type="text/javascript"> var person = {name: "deniro"}; console.log(Object.isExtensible(person));//true console.log(Object.isSealed(person));//false Object.seal(person);//密封对象 console.log(Object.isExtensible(person));//false console.log(Object.isSealed(person));//true person.age = 29; console.log(person.age);//undefined delete person.name; console.log(person.name);//deniro </script>
运行结果:
跟不可扩展对象相似,在非严格模式下,删除对象的已有成员会静默失败;而在严格模式下,会抛出错误。
3 冻结的对象
对象的最严格的防篡改级别是冻结!冻结的对象既不能扩展,又是密封的,而且对象的数据属性[[Writable]]被设置为 false,即属性值无法被修改:
<script type="text/javascript"> var person = {name: "deniro"}; console.log(Object.isExtensible(person));//true console.log(Object.isSealed(person));//false console.log(Object.isFrozen(person));//false Object.freeze(person); console.log(Object.isExtensible(person));//false console.log(Object.isSealed(person));//true console.log(Object.isFrozen(person));//trueo person.age = 29; console.log(person.age);//undefined delete person.name; console.log(person.name);//deniro person.name = "lily"; console.log(person.name);//deniro </script>
运行结果:
javascript是一种动态类型、弱类型的语言,基于对象和事件驱动并具有相对安全性并广泛用于客户端网页开发的脚本语言,同时也是一种广泛用于客户端Web开发的脚本语言。它主要用来给HTML网页添加动态功能,现在JavaScript也可被用于网络服务器,如Node.js。
关于使用JavaScript怎么创建防篡改对象问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。