尽管我怀疑没有办法在Web应用程序中制作完全无法触摸的JSON对象,但我想知道你们中是否有人有办法维护无法使用开发人员工具的控制台更改的全局JSON对象。我知道将其称为“私有”变量并不是最准确的描述,但OO语言中的私有变量的限制基本上就是我想要应用于JSON对象的限制。
我有一个正在开发的应用程序,它将使精明的用户避免与用于在Javascript文件中存储数据的对象进行交互,从而从中受益。
任何有关如何解决此问题的建议将不胜感激。
实际上,你可以在javascript和getter方法中使用“私有”变量来访问它们:
你可以做:
function privateData(){
var _myVariable = 1;
return {
getData: function(){
return _myVariable;
}
}
}
var myObject = privateData();
myObject._myVariable; //it's undefined
myObject.getData();//returns 1
在此示例中,变量_myVariable在浏览器中不可访问,并且用户无法以任何方式对其进行修改,因为它的局部作用域位于函数内部。你的函数返回一个可以访问该变量的对象,因为通过返回一个对象,你可以创建一个闭包。
在这种情况下,getData是返回对象的属性,并且可以访问_myVariable,因为它的本地作用域是privateData函数的作用域。
我推荐这些书:
一些高级的javascript技术
是的,这符合我的要求。尽管Alex Key发表了一篇文章,但对这个主题的看法更深入,但是这个代码示例显然是我可以使用的。
在此示例中,我向+1。而且我还会推荐“ Javascript的优秀部分”这本书-这令人大开眼界。
是的,此代码示例来自该文章以及使用它的一些经验。有关这些技术的更多详细信息,请参阅我的文章中的书
它实际上不是私有的,我可以使用浏览器中的漏洞轻松读取它。
真正很难打破这一点:复制函数,更改变量,将其粘贴到Firebug /控制台,按Enter和tada,数据已更改。