javascript - 覆盖 localStorage 的点符号

标签 javascript html local-storage

我正在尝试覆盖访问 localStorage 的点符号。 我已经设法覆盖 getItem 和 setItem 方法,如下所述:Is it possible to override Local Storage and Session Storage separately in 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;
}
});

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

localStorage.testKey = "test";
alert(localStorage.testKey)

最佳答案

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

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

关于javascript - 覆盖 localStorage 的点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33888685/

相关文章:

javascript - 获取数字的每一位数字

html - 如何对齐下拉列表中两个单词之间的缩进空间?

javascript - $(window).bind ("load", function(){} 事件

css - 在 Chrome 中拖动时更改 HTML5 Canvas 上的光标

javascript - 在新的 Google 协作平台 <Embed HTML> 中使用 localStorage 和 IndexedDB 不起作用

Javascript 函数返回 session 对象

javascript - ajax ie跨浏览器activexobject问题

javascript - JQuery ajax() 完成/失败回调在状态 200 时未返回

javascript - 如何通过onclick事件向localStorage项追加数据?

Firebase 刷新 token 过期