我一直在寻找一种使用Javascript将点符号转换为字符串的方法。基本上这就是我要找的东西:
function dotToString(dotNotation){
return something;
}
dotToString(this.is.just.a.test);
// Would return "this.is.just.a.test"
答案 0 :(得分:4)
简答:否
长答案:当javascript将参数传递给函数时,它会传入您尝试传入的变量中的值。dotToString
函数在任何时候都看不到this.is.just.a.test
(它会如果this.is.just.a.test = "blah"
,请参阅“blah”。这是不可能的。
答案 1 :(得分:1)
是的,您可以使用代理执行此操作。
function makeDotProxy(name) {
return new Proxy({}, {
get(target, prop) {
if (prop === 'valueOf' || prop === 'toString') return () => name;
if (typeof prop === 'symbol') return Reflect.get(target, prop);
return makeDotProxy(name + '.' + prop);
}
});
}
const This = makeDotProxy('this');
console.log(This.is.a.just.a.test.toString());

但是,你为什么要这样做?