如何覆盖对象获取回退
How to override object get fallback
我正在尝试创建一个对象,该对象 returns 访问的任何 属性 的 属性 名称。这可以在 javascript / nodejs 中干净地完成吗?这就是我想要完成的:
const mirror = {/*...*/};
console.log(mirror[1]);
// => 1
console.log(mirror.123);
// => '123'
console.log(mirror.randomPropertyHere);
// => 'randomPropertyHere'
我可以为特定的 属性 覆盖 getter,但我不知道一般情况下该怎么做。另外,如何区分数字和字符串?
我的(无效)尝试
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'
Also how can I differentiate between a number and a string?
不能,对象属性必须是字符串或符号。
我正在尝试创建一个对象,该对象 returns 访问的任何 属性 的 属性 名称。这可以在 javascript / nodejs 中干净地完成吗?这就是我想要完成的:
const mirror = {/*...*/};
console.log(mirror[1]);
// => 1
console.log(mirror.123);
// => '123'
console.log(mirror.randomPropertyHere);
// => 'randomPropertyHere'
我可以为特定的 属性 覆盖 getter,但我不知道一般情况下该怎么做。另外,如何区分数字和字符串?
我的(无效)尝试
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'
Also how can I differentiate between a number and a string?
不能,对象属性必须是字符串或符号。