- 主题: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.*
const oldGet = Object.getOwnPropertyDescriptor(KeyboardEvent.prototype, 'key').get;
Object.defineProperty(...
default: return oldGet.call(this);
...
--
修改:zli07 FROM 114.251.196.*
FROM 114.251.196.*
感谢大佬, 回家试一下
【 在 zli07 的大作中提到: 】
: const oldGet = Object.getOwnPropertyDescriptor(KeyboardEvent.prototype, 'key').get;
: Object.defineProperty(...
: default: return oldGet.call(this);
: ...................
--
FROM 211.145.70.*
default: return super.key
【 在 abettor 的大作中提到: 】
: 代码如下:
: Object.defineProperty(KeyboardEvent.prototype, 'key', {
: get: function() {
: ...................
--
FROM 183.95.135.*
这样不行, 不是继承关系, 没有super
1楼的方法管用
【 在 a0123456789q 的大作中提到: 】
: default: return super.key
:
--
FROM 221.216.136.*