2012-05-09 13 views
3

私はlocalStorageに2つのメソッドを追加したいと思います。IE8(javascript)でlocalStorageを拡張できないのはなぜですか?

localStorage.setObject(key, object); 
localStorage.getObject(key); 

このソリューションは、ほとんどのブラウザでは動作しますが、ないIE8:私の目標は、このようなもので終わることです

Storage.prototype.setObject = function(key, value) { 
    this[key] = JSON.stringify(value); 
} 

Storage.prototype.getObject = function(key) { 
    return JSON.parse(this[key]); 
} 

いくつかの研究を行った後、どうやら私はLawnchair.jsを使用することができますまたは回避それは別のやり方です。しかし、私はなぜ IE8で動作しないのだろうかと思っています。 StringとArrayを拡張できます。なぜストレージはありませんか?どのオブジェクトを拡張でき、どのオブジェクトをIE8で拡張できないのかを知るにはどうすればいいですか?

+1

私の推測では、オブジェクトはエクスポーズされたActiveXオブジェクトです。つまり、ActiveXオブジェクトによって定義された操作ではないため、このオブジェクトに新しいメソッドを追加しようとしています。禁じられている。 – sethcall

+1

ホストオブジェクトはJS仕様に従う必要はないことに常に注意してください。 –

答えて

2

これはです。です。また、DOM要素を拡張することもできません。関数を実際に呼び出す必要がある場合は、Storage.prototype.getObject.call(localStorage, 'hello')で行うことができます。

また、組み込みオブジェクトを拡張することは良いこととはみなされません。

+0

私はIE8モードの 'Storage'が定義されておらず、' localStorage'はプロトタイプを持っていません。おそらく、これは純粋なIE8でも同じです。 – kirilloid

関連する問題