我正在寻找一种方法来将点符号中的内容转换为使用Javascript的字符串。基本上这里就是我要找:如何将点符号转换为字符串?
function dotToString(dotNotation){
return something;
}
dotToString(this.is.just.a.test);
// Would return "this.is.just.a.test"
我正在寻找一种方法来将点符号中的内容转换为使用Javascript的字符串。基本上这里就是我要找:如何将点符号转换为字符串?
function dotToString(dotNotation){
return something;
}
dotToString(this.is.just.a.test);
// Would return "this.is.just.a.test"
简短的回答:没有
龙答:JavaScript时传递一个参数传递给函数,它通过从你正试图在传递变量的值。 dotToString
函数从来没有看到this.is.just.a.test
(它会看到“blah”,如果是this.is.just.a.test = "blah"
)。这不可能。
是的,你可以用代理来做到这一点。
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());
但是,你为什么要?
这不需要对象本身是一个代理吗?这不仅适用于所有开箱即用的对象 – FrankerZ
它不能一次成为两件事,它既可以是一个普通对象,就像普通对象一样工作,也可以是一个特殊对象,这里使用代理来实现,该代理返回点路径,但不是两者。 – 2017-04-26 05:05:54
这将抛出一个错误..除非该路径实际上已定义,并且您不会获取对象中属性的路径。 – epascarello
如果'this'或'this.is'或'this.is.just'等是'undefined',javascript会抛出错误 - 否则'原始的) - 并且没有回溯的概念来查看我们如何得到这个最终对象,因为可能有多个“父母”)...简短的回答,你不能 –
这几乎肯定是一个XY问题。你认为你需要这个的目的是什么? – Amadan