Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
区分javascript构造函数的实例_Javascript_Oop_Local Storage - Fatal编程技术网

区分javascript构造函数的实例

区分javascript构造函数的实例,javascript,oop,local-storage,Javascript,Oop,Local Storage,我正在尝试为localStorage.setItem()创建一个包装器,以便在整个应用程序中侦听更改。这就是我现在所处的位置,它的工作原理与预期相符: var _setItem = Storage.prototype.setItem; Storage.prototype.setItem = function(key) { localStorage.______tmp = true; if( this.______tmp ) { delete this._____

我正在尝试为
localStorage.setItem()
创建一个包装器,以便在整个应用程序中侦听更改。这就是我现在所处的位置,它的工作原理与预期相符:

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的事情,但我需要知道在localStorage而不是sessionStorage上调用setItem的时间。有没有更优雅的方式来满足我的需求?我最初的尝试是通过执行以下操作创建实例方法:

var _setItem = localStorage.setItem;
localStorage.setItem = function(key) { 
     _setItem.apply(this, arguments); 
}

但这会在Firefox中导致一个bug,其中
typeof localStorage.setItem==“string”
()。我不在乎尝试解决这个问题,因为使用原型感觉更好。

直接检查
这个
值:

var _setItem = Storage.prototype.setItem;

Storage.prototype.setItem = function(key) {
    if (this === localStorage) {
        localStorageObservable.notifySubscribers(key);
    }
    _setItem.apply(this, arguments);
};

哇,简单的解决方案有时会突然失效,真是太疯狂了。谢谢。哈,没问题,我也花了一点时间才弄明白<代码>=]