JavaScript 防篡改对象的用法示例


Posted in Javascript onApril 24, 2021

javascript防篡改对象

这个东西吧,用到的很少,个人感觉用处不大,但是,可以作为装逼的利器,哈哈,开搞。。

1、不可扩展对象

默认情况下对象都是可以扩展的,也就是说,任何时候都可以向对象中添加属性和方法。现在使用Object.preventExtensions(object)方法可以改变这个行为,让你不能再给对象添加属性和方法。例如:

var person={name : 'jack'};
Object.preventExtensions(person);
person.age=13;
console.log(person.age);///undefine

虽然不能给对象添加新成员,但是已有的成员则丝毫不受影响,你仍然可以修改和删除自己的已有的成员。另外使用isExtensible()方法还可以确定对象是否可以扩展。例如:

var person={name : 'jack'};
alert(Object.isExtensible(person));//true

Object.preventExtensions(person);
alert(Object.istExtensible(person));//false

2、密封的对象

ECMAScript 5 为对象定义的第二个保护级别是密封对象。使用Object.seal(object)方法可以将对象改为密封对象。密封对象不可扩展,而且已有成员的[[configurable]]特性将被设置为false。这就意味着不能删除属性和方法,因为不能使用Object.defineProperty()把数据修改为访问其属性,或者相反。但是属性值是可以修改的。

var person = {name:'tom'};
Object.seal(person);
person.age=12;
console.log(person.age);//undefine

delete person.name;
console.log(person.name);//tom

person.name="jack";
alert(person.name);//jack

使用Object.isSealed()方法可以确定对象是否被密封了,因为被密封的对象也是不可扩展的,所以使用Object.istExtensible()检测密封对象也会返回false(即不可扩展)

var person = {name:'tom'};
alert(Object.isExtensible(person));///true,可扩展
alert(Object.isSealed(person));////false,未加密
               
Object.seal(person);
alert(Object.isExtensible(person));///false,不可扩展
alert(Object.isSealed(person));////true,已经加密

3、冻结的对象

最严格的的防止篡改级别的是冻结对象,冻结的对象既不可扩展,又是密封的,而且对象的数据属性的[[Writable]]特性会被设置为false,如果定义set函数,访问器属性仍然是可写的,现在使用Object.freeze(object)方法可以将对象改为冻结的对象。

var person={name : 'tony'};
Object.freeze(person);
person.age=12;
alert(person.age);//undefine

delete person.name;
alert(person.name);//tony

person.name = 'jack';
alert(person.name);//tony

使用Object.isFrozen()方法可以检测对象是否是冻结对象,因为冻结对象既是不可扩展对象,又是密封的对象,所以用isExtensible()
和Object.istExtensible()检测冻结对象将分别返回false和true,

var person = {name:'tom'};
alert(Object.isExtensible(person));///true,可扩展
alert(Object.isSealed(person));////false,未加密
alert(Object.isFrozen(person));////false,未加密
               
Object.seal(person);
alert(Object.isExtensible(person));///false,不可扩展
alert(Object.isSealed(person));////true,已经加密
alert(Object.isFrozen(person));////true,已经冻结

以上就是JavaScript 防篡改对象的用法示例的详细内容,更多关于JavaScript 防篡改对象的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
javascript:文字不间断向左移动的实例代码
Aug 08 Javascript
为开发者准备的10款最好的jQuery日历插件
Feb 04 Javascript
jquery trigger函数执行两次的解决方法
Feb 29 Javascript
JS获取复选框的值,并传递到后台的实现方法
May 30 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
Jul 08 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
Oct 28 Javascript
JavaScript优化以及前段开发小技巧
Feb 02 Javascript
vue的mixins属性详解
Mar 14 Javascript
js运算符的一些特殊用法
Jul 29 Javascript
Postman的下载及安装教程详解
Oct 16 Javascript
JS实现滑动导航效果
Jan 14 Javascript
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
jquery插件实现悬浮的菜单
jquery插件实现代码雨特效
Apr 24 #jQuery
jquery插件实现搜索历史
Apr 24 #jQuery
关于Javascript闭包与应用的详解
vue首次渲染全过程
使用 JavaScript 制作页面效果
Apr 21 #Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 #Javascript
You might like
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
javascript每日必学之循环
2016/02/19 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
python中正则表达式的使用详解
2014/10/17 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
python 实现矩阵填充0的例子
2019/11/29 Python
python实现mean-shift聚类算法
2020/06/10 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
仓库理货员岗位职责
2013/12/18 职场文书
会议欢迎标语
2014/06/30 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
上课不认真检讨书
2014/09/17 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电