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网页关闭时提醒效果脚本
Oct 22 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
在JavaScript中如何解决用execCommand(
Oct 19 Javascript
jQuery简单实现提交数据出现loading进度条的方法
Mar 29 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
Jun 08 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
微信小程序 生命周期详解
Oct 12 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
Oct 28 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
Jan 04 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 Javascript
在vue中实现给每个页面顶部设置title
Jul 29 Javascript
jquery插件实现悬浮的菜单
jquery插件实现代码雨特效
Apr 24 #jQuery
jquery插件实现搜索历史
Apr 24 #jQuery
关于Javascript闭包与应用的详解
vue首次渲染全过程
使用 JavaScript 制作页面效果
Apr 21 #Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 #Javascript
You might like
php5.3 废弃函数小结
2010/05/16 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
python导入库的具体方法
2020/06/18 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
销售提升方案
2014/06/07 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
教育合作协议范本
2014/10/17 职场文书
小数乘法教学反思
2016/02/22 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
JavaScript分页组件使用方法详解
2021/07/26 Javascript
python模板入门教程之flask Jinja
2022/04/11 Python
css3 文字断裂效果
2022/04/22 HTML / CSS