javascript - 如何覆盖对象获取回退
问题描述
我正在尝试创建一个对象,该对象返回已访问的任何属性的属性名称。这可以在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']);
非常感谢您的时间和帮助!
解决方案
带代理。
const mirror = new Proxy({}, {
get(_, prop) { return prop; }
});
console.log(mirror[1]);
// => 1
console.log(mirror['123']);
// => '123'
console.log(mirror.randomPropertyHere);
// => 'randomPropertyHere'
另外如何区分数字和字符串?
不能,对象属性必须是字符串或符号。
推荐阅读
- python-3.x - 在 Python 中循环页面并从网站下载 pdf 文件
- excel - 如何自动填充活动单元格的列直到最后一行
- r - R中的文本挖掘/单词相关性
- c# - 使用 Identity Server 3 缓存外部身份验证 InMemory
- angular - 从应用程序外部调用 Angular Route
- javascript - 从 dateTime 字符串中获取时间
- javascript - Angular:如何操作数据响应
- embedded - SPI同步的想法
- angularjs - AngularJS 指令的动态(通配符)选择器
- file-io - 你能打开一个已经被同一个程序中的另一个函数打开的文件吗?