这篇文章主要介绍了js如何实现防篡改对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
防篡改对象
Javascript中任何对象都可以被同一环境中运行的代码修改,所以开发人员有时候需要定义防篡改对象(tamper-proof object) 来保护自己
不可扩展对象
默认情况下所有对象都是可以扩展的(添加属性和方法)
let person = { name: 'addone' }; person.age = 20;
第二行为person
对象扩展了age
属性,当然你可以阻止这一行为,使用Object.preventExtensions()
let person = { name: 'addone' }; Object.preventExtensions(person); person.age = 20; person.age // undefined
你还可以用Object.isExtensible()
来判断对象是不是可扩展的
let person = { name: 'addone' }; Object.isExtensible(person); // true Object.preventExtensions(person); Object.isExtensible(person); // false
请记住这是不可扩展!!,即不能添加属性或方法
密封的对象
密封对象不可扩展,且不能删除属性和方法
let person = { name: 'addone' }; Object.seal(person); person.age = 20; delete person.name; person.age // undefined person.name // addone
相对的也有Object.isSealed()
来判断是否密封
let person = { name: 'addone' }; Object.isExtensible(person); // true Object.isSealed(person); // false Object.seal(person); Object.isExtensible(person); // false Object.isSealed(person); // true
冻结的对象
这是最严格的防篡改级别,冻结的对象即不可扩展,又密封,且不能修改
let person = { name: 'addone' }; Object.freeze(person); person.age = 20; delete person.name; person.name = 'addtwo' person.age // undefined person.name // addone
同样也有Object.isFrozen
来检测
let person = { name: 'addone' }; Object.isExtensible(person); // true Object.isSealed(person); // false Object.isFrozen(person); // false Object.freeze(person); Object.isExtensible(person); // false Object.isSealed(person); // true Object.isFrozen(person); // true
感谢你能够认真阅读完这篇文章,希望小编分享的“js如何实现防篡改对象”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。