我正在尝试覆盖访问localStorage的点表示法。
我已经按照此处描述的方式成功地覆盖了getItem和setItem方法:在HTML5中是否可以分别覆盖本地存储和会话存储?
现在我尝试创建一个代理来捕获点访问,但由于我似乎无法像这里尝试的那样覆盖localStorage对象,所以失败了。
现在当我尝试时,仍然会得到测试而不是123:
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)
get
/set
方法尚未被调用。尝试在每个方法中添加console.log
调用(在if
之外),您将看到结果。 - hindmost