1
我正在嘗試爲localStorage.setItem()
創建一個包裝,以便我可以在整個應用程序中偵聽更改。下面是我在哪裏,現在,它按預期工作:區分javascript構造函數的實例
var _setItem = Storage.prototype.setItem;
Storage.prototype.setItem = function(key) {
localStorage.______tmp = true;
if(this.______tmp) {
delete this.______tmp;
localStorageObservable.notifySubscribers(key);
}
_setItem.apply(this, arguments);
};
正如你可能已經猜到了,我想擺脫整個_____tmp的事情,但我需要知道什麼時候被調用的setItem localStorage而不是sessionStorage。有沒有更優雅的方式來做我需要的?我最初的嘗試是通過執行以下操作來創建一個實例方法:
var _setItem = localStorage.setItem;
localStorage.setItem = function(key) {
_setItem.apply(this, arguments);
}
但是這會導致錯誤的Firefox其中typeof localStorage.setItem === "string"
(I know, wierd right?)。我不在乎試圖解決這個問題,不過因爲使用原型感覺更好。
哇,太瘋狂了簡單的解決方案是如何打擊就在有時。謝謝。 – 2014-09-26 21:13:03
哈哈沒問題,花了一點時間弄清楚了。 '=]' – 2014-09-26 21:13:39