JavaScript:覆盖 get 和 set 但保留本机功能
JavaScript: Override get and set but keep native functionality
用于测试:我需要覆盖 JavaScript 中对 HTMLElement 属性的本机访问,但保留本机功能。
下面的代码覆盖了 HTMLElement
的 offsetWidth
属性 但我不知道如何记录原生 getter.[=15 的结果=]
// How can I call this from within the getter?
var nativeOffsetWidth = HTMLElement.prototype.offsetWidth;
// Overrides the native access
Object.defineProperty(HTMLElement.prototype, 'offsetWidth', {
get: () => {
// This part does not work! I need to access the native property here.
var value = nativeOffsetWidth.call(this);
console.log(value);
return value;
}
});
一旦我得到正确的结果,我也想修改结果value
。
提前致谢!
您可以使用 Object.getOwnPropertyDescriptor
获取 属性 的原始值
这样使用:
const nativeOffsetWidth = Object.getOwnPropertyDescriptor(
HTMLElement.prototype,
'offsetWidth'
).get;
nativeOffsetWidth.call(document.body /* example html element */);
用于测试:我需要覆盖 JavaScript 中对 HTMLElement 属性的本机访问,但保留本机功能。
下面的代码覆盖了 HTMLElement
的 offsetWidth
属性 但我不知道如何记录原生 getter.[=15 的结果=]
// How can I call this from within the getter?
var nativeOffsetWidth = HTMLElement.prototype.offsetWidth;
// Overrides the native access
Object.defineProperty(HTMLElement.prototype, 'offsetWidth', {
get: () => {
// This part does not work! I need to access the native property here.
var value = nativeOffsetWidth.call(this);
console.log(value);
return value;
}
});
一旦我得到正确的结果,我也想修改结果value
。
提前致谢!
您可以使用 Object.getOwnPropertyDescriptor
获取 属性 的原始值这样使用:
const nativeOffsetWidth = Object.getOwnPropertyDescriptor(
HTMLElement.prototype,
'offsetWidth'
).get;
nativeOffsetWidth.call(document.body /* example html element */);