2012-02-23 208 views
-1

这是一个罕见的情况,但有可能设置的项目在localStorage的,这样它的不可修改的,甚至在同一个域?如果没有,有没有解决办法?例如。侦听localStorage访问事件并取消本地存储访问该特定变量的事件?是否可以在localStorage中设置不可修改的(常量)项目?如果是这样,怎么样?

我知道这是一个奇怪的情况,可能是不可能的,但任何想法?

样品用例:

您正在创建一个平台,让第三方开发人员可以创建 应用程序,并将它们添加到同一个域。你想appPolicy是通过localStorage的 可用,但你不希望其他开发商 修改。

+1

我不认为本地存储是去了解你以后的路。如果你想为开发人员添加全局变量来访问,但他们不能存储修改后的值,只需为他们提供一个为网站开发所需的包含内容,并将所有变量放在那里。 – Archer 2012-02-23 01:39:44

回答

0

不能存储在localStorage的只读数据。但是,如果您想在JavaScript中使用只读属性,则可以将它们设为私有,并通过特权方法公开它们。例如:

function Person() { 
    var ssn = '123-456-7890'; // private; cannot be accessed from outside the class 

    // privileged method. has access to private data, and is publicly available 
    this.getSSN = function() { 
     return ssn; 
    } 
} 

一旦你创建的Person一个实例是没有办法(我知道的)来改变ssn

我希望这会有所帮助。

+0

有没有办法改变ssn,但有一种方法可以改变getSSN返回的内容:var person = new Person(); person.getSSN =函数(){return“指令000-000-0000'' – 2013-03-19 00:13:54

+1

@MaxNanasy:好一点,我没有,虽然这一点。幸运的是,您可以通过密封构造函数及其原型(例如, 'Object.seal(人); Object.seal(Person.prototype的)'。请注意,这只适用于ES5兼容的浏览器。 – alekop 2013-03-21 01:06:42

相关问题