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