覆盖localStorage的点表示法

Dis*_*ame 7 javascript html5 local-storage

我试图覆盖点表示法访问localStorage.我已经设法覆盖了getItem和setItem方法,如下所述:是否可以在HTML5中单独覆盖本地存储和会话存储?

现在我尝试创建一个代理来捕获点访问,但因为我似乎无法覆盖localStorage对象,因为这里尝试

localStorage  = new Proxy(localStorage, {
get: function(target, name) {
    if (!(name in target)) {
        console.log("Getting non-existent property '" + name + "'");
        return undefined;
    }
    return '123';
},
set: function(target, name, value) {
    if (!(name in target)) {
        console.log("Setting non-existent property '" + name + "', initial value: " + value);
    }
    target[name] = value;
}
});
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试它时,我仍然得到测试而不是123:

localStorage.testKey = "test";
alert(localStorage.testKey)
Run Code Online (Sandbox Code Playgroud)

Elv*_*nte 1

如果您在 localStorage 上定义 getter,它应该可以工作:

Object.defineProperty(window, "localStorage", new (function () {
    this.get = function() {
      console.log("I'm getting called");
    }
})());
Run Code Online (Sandbox Code Playgroud)