2012-02-23 10 views
-1

これはまれなケースですが、同じドメインでも変更できないようにlocalStorageに項目を設定することは可能ですか?そうでない場合、回避策はありますか?例えば。 localStorageアクセスイベントをリッスンし、その特定の変数へのローカルストレージアクセスのイベントをキャンセルしますか?localStorageに変更不可能な(定数)項目を設定することはできますか?もしそうなら、どうですか?

私はそれが奇妙なケースであり、可能ではない可能性がありますが、任意のアイデアを知っていますか?

サンプル・ユースケース:

あなたは、サードパーティの開発者が アプリケーションを作成し、同じドメインに追加することができ、プラットフォームを作成しています。 appStoreを使用してappPolicyを にしますが、他の開発者には を変更させたくありません。

+1

私は、ローカルストレージがあなたの後ろに行く方法ではないと思います。開発者がアクセスするためのグローバル変数を追加したいが、変更された値を格納できない場合は、サイトの開発に必要なインクルードを与え、そこにすべての変数を入れるだけです。 – Archer

答えて

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 = function(){return '000-000-0000'' –

+1

@MaxNanasy:良い点、私はそれを考えていませんでした。幸いなことに、コンストラクタとそのプロトタイプを密封することでそれを防ぐことができます。 'Object.seal(Person); Object.seal(Person.prototype) 'を実行します。これはES5互換ブラウザでのみ機能することに注意してください。 – alekop

関連する問題