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 相关文章推荐
网页中的图片的处理方法与代码
Nov 26 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
Jul 06 Javascript
jquery如何实现锚点链接之间的平滑滚动
Dec 02 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
Sep 19 Javascript
浅谈JavaScript超时调用和间歇调用
Aug 30 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
Apr 29 Javascript
原生js实现简单的焦点图效果实例
Dec 14 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
Nov 10 Javascript
微信小程序实现人脸识别登陆的示例代码
Apr 02 Javascript
对Layer弹窗使用及返回数据接收的实例详解
Sep 26 Javascript
js实现翻牌小游戏
Jul 31 Javascript
jquery插件实现悬浮的菜单
jquery插件实现代码雨特效
Apr 24 #jQuery
jquery插件实现搜索历史
Apr 24 #jQuery
关于Javascript闭包与应用的详解
vue首次渲染全过程
使用 JavaScript 制作页面效果
Apr 21 #Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 #Javascript
You might like
PHP以及MYSQL日期比较方法
2012/11/29 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
jQuery代码优化之基本事件
2011/11/01 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
写了个监控nginx进程的Python脚本
2012/05/10 Python
Python中Collection的使用小技巧
2014/08/18 Python
python中模块查找的原理与方法详解
2017/08/11 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
pyqt5中动画的使用详解
2020/04/01 Python
python中四舍五入的正确打开方式
2021/01/18 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
园林技术个人的自我评价
2014/02/15 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书