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 相关文章推荐
js prototype截取字符串函数
Apr 01 Javascript
js实现翻页后保持checkbox选中状态的实现方法
Nov 03 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
Oct 13 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
AngularJS指令与指令之间的交互功能示例
Dec 14 Javascript
微信小程序 传值取值的几种方法总结
Jan 16 Javascript
vue2.x+webpack快速搭建前端项目框架详解
Nov 30 Javascript
React 组件中的 bind(this)示例代码
Sep 16 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 Javascript
JavaScript 与 TypeScript之间的联系
Nov 27 Javascript
jquery插件实现悬浮的菜单
jquery插件实现代码雨特效
Apr 24 #jQuery
jquery插件实现搜索历史
Apr 24 #jQuery
关于Javascript闭包与应用的详解
vue首次渲染全过程
使用 JavaScript 制作页面效果
Apr 21 #Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 #Javascript
You might like
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
php 强制下载文件实现代码
2013/10/28 PHP
php实现算术验证码功能
2018/12/05 PHP
尽可能写"友好"的"Javascript"代码
2007/01/09 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
用vue写一个日历
2020/11/02 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
对python Tkinter Text的用法详解
2018/10/11 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
python中np是做什么的
2020/07/21 Python
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
总裁岗位职责
2013/12/04 职场文书
祝酒词范文
2015/08/12 职场文书