首页 > 解决方案 > 如何覆盖对象获取回退

问题描述

我正在尝试创建一个对象,该对象返回已访问的任何属性的属性名称。这可以在javascript / nodejs中干净地完成吗?这就是我想要完成的:

const mirror = {/*...*/};
console.log(mirror[1]);
// => 1
console.log(mirror.123);
// => '123'
console.log(mirror.randomPropertyHere);
// => 'randomPropertyHere'

我可以覆盖特定属性的吸气剂,但我不知道如何通用。另外如何区分数字和字符串?

我的(不工作)尝试

const mirror = {
  get[1] () {
    console.log('number');
    return 1;
  },
  get['1'] () {
    console.log('string');
    return '1';
  }
};

console.log(mirror[1]);
console.log(mirror['1']);

非常感谢您的时间和帮助!

标签: javascriptnode.jsobjectpropertiesgetter

解决方案


带代理。

const mirror = new Proxy({}, {
  get(_, prop) { return prop; }
});
console.log(mirror[1]);
// => 1
console.log(mirror['123']);
// => '123'
console.log(mirror.randomPropertyHere);
// => 'randomPropertyHere'

另外如何区分数字和字符串?

不能,对象属性必须是字符串或符号。


推荐阅读