摘要:使用对象代理就是就是属性这里也可以定义规则可以在这里进行各种规则设置不起作用
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
摘要:本篇白皮书的目标是描述企业云计算中存储必备的个要素。虽然,云存储服务提供商在考虑成本的同时继续增加可用性,但是目前市场上的服务级别协议不能满足企业关键应用的需求。内部企业方案和企业云存储的主要差别在于,主数据保护在方案中是如何绑定的。在最近对云计算的所有关注中,存储更多地被视为基础平台。时至今日,许多云计算提供的仅仅局限于CPU内核的集合,定量的内存分配,低转速存储,或者还有一些面向互联网的...
摘要:检查参数的有效性每当编写方法或者构造器时,应该考虑它的参数有哪些限制。为了保护实例的内部信息避免受到这种攻击,对于构造器的每个可变参数进行保护性拷贝是必要的,并且使用备份对象作为实例的组件,而不是使用原始的对象。 检查参数的有效性 每当编写方法或者构造器时,应该考虑它的参数有哪些限制。应该把这些限制写到文档中,并且在这个方法体开头处,通过显示的检查来实施这些限制。养成这样的习惯非常重要...
摘要:内部调用外挂使用逆向技术分析出游戏内部的汇编代码,把里面对游戏玩家有利的函数作为外挂的实现功能。检测代码段在游戏没有运行之前,修改添加或删除文件的二进制信息可以起到修改程序流程的作用,从而起到外挂的作用。 前言 现如今,有很多游戏外挂软件,它们可以修改游戏显示的数据和内部代码,来达到谋取利益...
阅读 2314·2021-11-24 10:33
阅读 1385·2019-08-30 15:43
阅读 3275·2019-08-29 17:24
阅读 3480·2019-08-29 14:21
阅读 2219·2019-08-29 13:59
阅读 1735·2019-08-29 11:12
阅读 2811·2019-08-28 18:00
阅读 1847·2019-08-26 12:17