我想知道如何为 document.cookie 等默认对象定义 getter。
document.__defineGetter__("cookie", function(newv) {
console.log('accessing cookie');
//what to return here??
});
返回 document.cookie 显然会导致递归。
谢谢
我想知道如何为 document.cookie 等默认对象定义 getter。
document.__defineGetter__("cookie", function(newv) {
console.log('accessing cookie');
//what to return here??
});
返回 document.cookie 显然会导致递归。
谢谢
尝试这样的事情 -
var old_cookie = document.cookie;
Object.defineProperty(document, 'cookie', {
get: function() {
console.log('Getting cookie');
return this._value;
},
set: function(val) {
console.log('Setting cookie', arguments);
this._value = val;
return this._value;
}
});
document.cookie = old_cookie;
当您将 getter/setter 添加到 cookie 属性时,它会擦除该值,因为描述符不能同时具有访问器和值,因此您必须保存旧的 cookie 值并在定义访问器后重新分配它。
尝试这个:
var desc = Object.getOwnPropertyDescriptor(document, 'cookie');
return desc.value;
但是,我不确定这是否会反映更新。
var getter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(document), 'cookie').get.bind(document)
return getter();
这应该可以完美地工作。