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 相关文章推荐
jQuery中与toggleClass等价的程序段 以及未来学习的方向
Mar 18 Javascript
javascript在事件监听方面的兼容性小结
Apr 07 Javascript
iScroll中事件点击触发两次解决方案
Mar 11 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
Mar 29 Javascript
关于微信jssdk实现多图片上传的一点心得分享
Dec 13 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
Feb 09 Javascript
jquery实现折叠菜单效果【推荐】
Mar 08 Javascript
webpack 打包压缩js和css的方法示例
Mar 20 Javascript
jsonp跨域及实现百度首页联想功能的方法
Aug 30 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
Dec 05 Javascript
JavaScript实现PC端四格密码输入框功能
Feb 19 Javascript
微信小程序实现拼图小游戏
Oct 22 Javascript
jquery插件实现悬浮的菜单
jquery插件实现代码雨特效
Apr 24 #jQuery
jquery插件实现搜索历史
Apr 24 #jQuery
关于Javascript闭包与应用的详解
vue首次渲染全过程
使用 JavaScript 制作页面效果
Apr 21 #Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 #Javascript
You might like
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
Express.JS使用详解
2014/07/17 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python中字典的基础知识归纳小结
2015/08/19 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
python2和python3的输入和输出区别介绍
2018/11/20 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
英文导游欢迎词
2014/01/11 职场文书
初中政治教学反思
2014/01/17 职场文书
幼儿园见习报告
2014/10/30 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
技术员岗位职责范本
2015/04/11 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
MySQL一些常用高级SQL语句
2021/07/03 MySQL