摘要:使用對象代理就是就是屬性這里也可以定義規則可以在這里進行各種規則設置不起作用
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"; // 不起作用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/100589.html
摘要:本篇白皮書的目標是描述企業云計算中存儲必備的個要素。雖然,云存儲服務提供商在考慮成本的同時繼續增加可用性,但是目前市場上的服務級別協議不能滿足企業關鍵應用的需求。內部企業方案和企業云存儲的主要差別在于,主數據保護在方案中是如何綁定的。在最近對云計算的所有關注中,存儲更多地被視為基礎平臺。時至今日,許多云計算提供的僅僅局限于CPU內核的集合,定量的內存分配,低轉速存儲,或者還有一些面向互聯網的...
摘要:檢查參數的有效性每當編寫方法或者構造器時,應該考慮它的參數有哪些限制。為了保護實例的內部信息避免受到這種攻擊,對于構造器的每個可變參數進行保護性拷貝是必要的,并且使用備份對象作為實例的組件,而不是使用原始的對象。 檢查參數的有效性 每當編寫方法或者構造器時,應該考慮它的參數有哪些限制。應該把這些限制寫到文檔中,并且在這個方法體開頭處,通過顯示的檢查來實施這些限制。養成這樣的習慣非常重要...
摘要:內部調用外掛使用逆向技術分析出游戲內部的匯編代碼,把里面對游戲玩家有利的函數作為外掛的實現功能。檢測代碼段在游戲沒有運行之前,修改添加或刪除文件的二進制信息可以起到修改程序流程的作用,從而起到外掛的作用。 前言 現如今,有很多游戲外掛軟件,它們可以修改游戲顯示的數據和內部代碼,來達到謀取利益...
閱讀 2324·2021-11-24 10:33
閱讀 1389·2019-08-30 15:43
閱讀 3283·2019-08-29 17:24
閱讀 3489·2019-08-29 14:21
閱讀 2230·2019-08-29 13:59
閱讀 1742·2019-08-29 11:12
閱讀 2817·2019-08-28 18:00
閱讀 1858·2019-08-26 12:17