Warm tip: This article is reproduced from serverfault.com, please click

jquery-创建一个“私有” JSON对象?

(jquery - Creating a "private" JSON object?)

发布于 2011-06-29 13:44:32

尽管我怀疑没有办法在Web应用程序中制作完全无法触摸的JSON对象,但我想知道你们中是否有人有办法维护无法使用开发人员工具的控制台更改的全局JSON对象。我知道将其称为“私有”变量并不是最准确的描述,但OO语言中的私有变量的限制基本上就是我想要应用于JSON对象的限制。

我有一个正在开发的应用程序,它将使精明的用户避免与用于在Javascript文件中存储数据的对象进行交互,从而从中受益。

任何有关如何解决此问题的建议将不胜感激。

Questioner
MoarCodePlz
Viewed
11
Nicola Peluchetti 2011-06-29 22:02:32

实际上,你可以在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函数的作用域。

我推荐这些书:

  • Stojanov的 面向对象JavascriptJavascript模式
  • Javascript: Crockford的优秀文章

一些高级的javascript技术