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 相关文章推荐
ExtJs 3.1 XmlTreeLoader Example Error
Feb 09 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
Aug 24 Javascript
清空元素html("") innerHTML="" 与 empty()的区别和应用(推荐)
Aug 14 Javascript
JavaScript实现的数字与字符串转换功能示例
Aug 23 Javascript
详解react-router4 异步加载路由两种方法
Sep 12 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
Sep 24 Javascript
微信小程序实现滚动加载更多的代码
Dec 06 Javascript
jquery实现简易验证插件封装
Sep 13 jQuery
jquery插件实现悬浮的菜单
jquery插件实现代码雨特效
Apr 24 #jQuery
jquery插件实现搜索历史
Apr 24 #jQuery
关于Javascript闭包与应用的详解
vue首次渲染全过程
使用 JavaScript 制作页面效果
Apr 21 #Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 #Javascript
You might like
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
PHP遍历数组的方法汇总
2015/04/30 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
angular实现spa单页面应用实例
2017/07/10 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
python中format函数如何使用
2020/06/22 Python
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
实习自荐信
2013/10/13 职场文书
教师自我鉴定范文
2013/11/10 职场文书
自动化专业职业生涯规划书范文
2014/01/16 职场文书
大一学生的职业生涯规划书范文
2014/01/19 职场文书
交通安全温馨提示语
2015/07/14 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python
比较几种Redis集群方案
2021/06/21 Redis
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技