资讯专栏INFORMATION COLUMN

js保护内部数据的三种方式

wwolf / 1794人阅读

摘要:使用对象代理就是就是属性这里也可以定义规则可以在这里进行各种规则设置不起作用

js中三种实现私有化内部数据的方式

通过暴露set和get两个公共api的方式,通过这两个api对内部数据进行操作和保护,规则可以写在get和set方法中

function Person = {
  var data = {
    name: "es3",
    sex: "female",
    age: 12
  };
  this.get = function (key) {
    return data[key];
  }
  this.set = function (key, value) {
    if (key !== "sex") {
      data[key] = value;
    }
  }
};
var person = new Person();
console.table({
  name: person.get("name"),
  sex: person.get("sex"),
  age: person.get("age")
});// name: "es3", sex: "female", age: 12
person.set("sex", "male"); // person.get("sex") === "female" 对set做了判断,所以设置没用,这样就通过定义实例的 set和get方式来保护 内部的data变量

直接使用 defineProperty对数据属性进行限制

// 不能设置规则,哪种情况哪些属性可以读写,使用defineProperty就搞不定
var Person = {
  name: "es3",
  sex: "female",
  age: 12
};
Object.defineProperty(Person, "sex", {
  writable: false,
  value: "female"
});
Person.sex = "male"; // Person.sex === female; 会失败,严格模式会报错。

使用 Proxy 对象代理

var Person = {
  name: "es3",
  sex: "female",
  age: 12
};
let person = new Proxy(Person, {
  get(target, key) {
    // target就是 Person, key就是属性,这里也可以定义规则
    return target[key];
  },
  set(target, key, value) {
    // 可以在这里进行各种规则设置
    if (key !== "sex") {
      target[key] = value;
    }
  }
});
person.sex = "male"; // 不起作用

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100589.html

相关文章

  • 文章6:JS高级

    摘要:一正则表达式使用正则表达是的字符串的三个基础用法进阶用法的用法支持正则的用法的正则用法的普通用法如果匹配不到值返回的进阶用法正则的进阶知识字符串的普通用法正则用法二面向对象封装继承多态三原型链与作用域链原型链作用域链四严格模式严格模式的实现 一、JS正则表达式 使用正则表达是的字符串的三个API //(1)replace基础用法 var str = welcome to my ho...

    v1 评论0 收藏0
  • 云存储必备的六大要素是哪些

    摘要:本篇白皮书的目标是描述企业云计算中存储必备的个要素。虽然,云存储服务提供商在考虑成本的同时继续增加可用性,但是目前市场上的服务级别协议不能满足企业关键应用的需求。内部企业方案和企业云存储的主要差别在于,主数据保护在方案中是如何绑定的。在最近对云计算的所有关注中,存储更多地被视为基础平台。时至今日,许多云计算提供的仅仅局限于CPU内核的集合,定量的内存分配,低转速存储,或者还有一些面向互联网的...

    2bdenny 评论0 收藏0
  • 《Effective Java》,关于方法

    摘要:检查参数的有效性每当编写方法或者构造器时,应该考虑它的参数有哪些限制。为了保护实例的内部信息避免受到这种攻击,对于构造器的每个可变参数进行保护性拷贝是必要的,并且使用备份对象作为实例的组件,而不是使用原始的对象。 检查参数的有效性 每当编写方法或者构造器时,应该考虑它的参数有哪些限制。应该把这些限制写到文档中,并且在这个方法体开头处,通过显示的检查来实施这些限制。养成这样的习惯非常重要...

    worldligang 评论0 收藏0
  • 常见三种撞库方法

    摘要:最常见的三种撞库方法第一种用个密码字典撞个账号,这个的表象是,一个账号在某个较短的时间内,可能会有多次密码尝试。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 在安全领域向来是先知道如何攻,其次才是防。在介绍如何防范网站被黑客扫描撞库之前,先简单介绍一下什么是撞库:撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对于的字典表,尝试批量登录其他网站后,得到一系列可以登录的用户。...

    ctriptech 评论0 收藏0
  • 对反游戏外挂技术的思考及实现

    摘要:内部调用外挂使用逆向技术分析出游戏内部的汇编代码,把里面对游戏玩家有利的函数作为外挂的实现功能。检测代码段在游戏没有运行之前,修改添加或删除文件的二进制信息可以起到修改程序流程的作用,从而起到外挂的作用。 前言 现如今,有很多游戏外挂软件,它们可以修改游戏显示的数据和内部代码,来达到谋取利益...

    wangtdgoodluck 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<