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 相关文章推荐
脚本收藏iframe
Jul 21 Javascript
JavaScript判断两种格式的输入日期的正确性的代码
Mar 25 Javascript
FireFox中textNode分片的问题
Apr 10 Javascript
Apply an AutoFormat to an Excel Spreadsheet
Jun 12 Javascript
你必须知道的Javascript知识点之"this指针"的应用
Apr 23 Javascript
基于jquery实现的省市区级联无ajax
Sep 24 Javascript
基于jquery实现百度新闻导航菜单滑动动画
Mar 15 Javascript
jQuery基础知识点总结(必看)
May 31 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
Jul 12 Javascript
AngularJS基础 ng-if 指令用法
Aug 01 Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 Javascript
JavaScript对象原型链原理详解
Feb 05 Javascript
jquery插件实现悬浮的菜单
jquery插件实现代码雨特效
Apr 24 #jQuery
jquery插件实现搜索历史
Apr 24 #jQuery
关于Javascript闭包与应用的详解
vue首次渲染全过程
使用 JavaScript 制作页面效果
Apr 21 #Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 #Javascript
You might like
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
javascript通过class来获取元素实现代码
2013/02/20 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
vue使用recorder.js实现录音功能
2019/11/22 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
js实现时钟定时器
2020/03/26 Javascript
js实现星星打分效果
2020/07/05 Javascript
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
python中os包的用法
2020/06/01 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
电话销售经理岗位职责
2013/12/07 职场文书
师范生的个人求职信范文
2014/01/04 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android