2012-02-23 47 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

相關問題