- 主题:js 使用Object.defineProperty重写属性后, 怎么获取原来的值?
代码如下:
Object.defineProperty(KeyboardEvent.prototype, 'key', {
get: function() {
switch (this.keyCode) {
case 45: return "KeyG"; // g
case 46: return "KeyR"; // r
case 35: return "KeyF"; // f
case 36: return "KeyZ"; // z
case 33: return "ArrowUp"; // 向上
case 34: return "ArrowDown"; // 向下
default: return this.key // 这里会递归调用出错, 怎么获取原来的值?
}
}
})
--
FROM 221.216.136.*
感谢大佬, 回家试一下
【 在 zli07 的大作中提到: 】
: const oldGet = Object.getOwnPropertyDescriptor(KeyboardEvent.prototype, 'key').get;
: Object.defineProperty(...
: default: return oldGet.call(this);
: ...................
--
FROM 211.145.70.*
这样不行, 不是继承关系, 没有super
1楼的方法管用
【 在 a0123456789q 的大作中提到: 】
: default: return super.key
:
--
FROM 221.216.136.*