• 售前

  • 售后

热门帖子
入门百科

JavaScript 防篡改对象的用法示例

[复制链接]
张王赵高痔 显示全部楼层 发表于 2021-10-26 14:24:49 |阅读模式 打印 上一主题 下一主题
目次


  • javascript防篡改对象
  • 1、不可扩展对象
  • 2、密封的对象
  • 3、冻结的对象

javascript防篡改对象


这个东西吧,用到的很少,个人感觉用处不大,但是,可以作为装逼的利器,哈哈,开搞。。

1、不可扩展对象


默认情况下对象都是可以扩展的,也就是说,任何时间都可以向对象中添加属性和方法。现在使用Object.preventExtensions(object)方法可以改变这个运动,让你不能再给对象添加属性和方法。比方:
  1. var person={name : 'jack'};
  2. Object.preventExtensions(person);
  3. person.age=13;
  4. console.log(person.age);///undefine
复制代码
固然不能给对象添加新成员,但是已有的成员则丝绝不受影响,你仍然可以修改和删除本身的已有的成员。别的使用isExtensible()方法还可以确定对象是否可以扩展。比方:
  1. var person={name : 'jack'};
  2. alert(Object.isExtensible(person));//true
  3. Object.preventExtensions(person);
  4. alert(Object.istExtensible(person));//false
复制代码
2、密封的对象


ECMAScript 5 为对象定义的第二个保护级别是密封对象。使用Object.seal(object)方法可以将对象改为密封对象。密封对象不可扩展,而且已有成员的[[configurable]]特性将被设置为false。这就意味着不能删除属性和方法,由于不能使用Object.defineProperty()把数据修改为访问其属性,大概相反。但是属性值是可以修改的。
  1. var person = {name:'tom'};
  2. Object.seal(person);
  3. person.age=12;
  4. console.log(person.age);//undefine
  5. delete person.name;
  6. console.log(person.name);//tom
  7. person.name="jack";
  8. alert(person.name);//jack
复制代码
使用Object.isSealed()方法可以确定对象是否被密封了,由于被密封的对象也是不可扩展的,所以使用Object.istExtensible()检测密封对象也会返回false(即不可扩展)
  1. var person = {name:'tom'};
  2. alert(Object.isExtensible(person));///true,可扩展
  3. alert(Object.isSealed(person));////false,未加密
  4.                
  5. Object.seal(person);
  6. alert(Object.isExtensible(person));///false,不可扩展
  7. alert(Object.isSealed(person));////true,已经加密
复制代码
3、冻结的对象


最严酷的的防止篡改级别的是冻结对象,冻结的对象既不可扩展,又是密封的,而且对象的数据属性的[[Writable]]特性会被设置为false,如果定义set函数,访问器属性仍然是可写的,现在使用Object.freeze(object)方法可以将对象改为冻结的对象。
  1. var person={name : 'tony'};
  2. Object.freeze(person);
  3. person.age=12;
  4. alert(person.age);//undefine
  5. delete person.name;
  6. alert(person.name);//tony
  7. person.name = 'jack';
  8. alert(person.name);//tony
复制代码
使用Object.isFrozen()方法可以检测对象是否是冻结对象,由于冻结对象既是不可扩展对象,又是密封的对象,所以用isExtensible()
和Object.istExtensible()检测冻结对象将分别返回false和true,
  1. var person = {name:'tom'};
  2. alert(Object.isExtensible(person));///true,可扩展
  3. alert(Object.isSealed(person));////false,未加密
  4. alert(Object.isFrozen(person));////false,未加密
  5.                
  6. Object.seal(person);
  7. alert(Object.isExtensible(person));///false,不可扩展
  8. alert(Object.isSealed(person));////true,已经加密
  9. alert(Object.isFrozen(person));////true,已经冻结
复制代码
以上就是JavaScript 防篡改对象的用法示例的详细内容,更多关于JavaScript 防篡改对象的资料请关注草根技术分享别的相干文章!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作