Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将点符号转换为字符串?_Javascript_Node.js_Syntax - Fatal编程技术网

Javascript 如何将点符号转换为字符串?

Javascript 如何将点符号转换为字符串?,javascript,node.js,syntax,Javascript,Node.js,Syntax,我正在寻找一种使用Javascript将点表示法转换为字符串的方法。基本上这就是我想要的: function dotToString(dotNotation){ return something; } dotToString(this.is.just.a.test); // Would return "this.is.just.a.test" 简短回答:没有 详细回答:当javascript将参数传递给函数时,它会传递您试图传递的变量的值。dotToString函数在任何时候都不会看到

我正在寻找一种使用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
(如果
this.is.just.a.test=“blah”
,它会看到“blah”)。这是不可能的。

简短回答:不可能


详细回答:当javascript将参数传递给函数时,它会传递您试图传递的变量的值。
dotToString
函数在任何时候都不会看到
this.is.just.a.test
(如果
this.is.just.a.test=“blah”
,它会看到“blah”)。这是不可能的。

是的,您可以使用代理执行此操作

函数makeDotProxy(名称){
返回新的代理({}{
获得(目标、道具){
if(prop=='valueOf'| | prop==='toString')返回()=>name;
if(typeof prop==='symbol')返回Reflect.get(target,prop);
返回makeDotProxy(name+'.'+prop);
}
});
}
const This=makeDotProxy('This');

log(This.is.a.just.a.test.toString())是的,您可以使用代理执行此操作

函数makeDotProxy(名称){
返回新的代理({}{
获得(目标、道具){
if(prop=='valueOf'| | prop==='toString')返回()=>name;
if(typeof prop==='symbol')返回Reflect.get(target,prop);
返回makeDotProxy(name+'.'+prop);
}
});
}
const This=makeDotProxy('This');

log(This.is.a.just.a.test.toString())。。除非实际定义了该路径,并且您将无法获取对象中属性的路径。如果
this
this.is
this.is.just
etc is
未定义
javascript将抛出错误-否则
this.is.just.a.test
将导致某些结果(对象或原语)-没有回溯的概念来观察我们是如何到达最终目标的,因为可能有多个“父母”)。。。简而言之,你不能。这几乎可以肯定是一个XY问题。你认为你需要这个的目的是什么?我试图创建一个节点包,允许你用点符号浏览文件系统。因此,最终目标是require(dn(src.script.js))=require(“src/script.js”)dn是一个函数;点表示法用于访问对象的属性。您试图将该表示法用于javascript解析器不支持的目的。这不会起作用。这将引发错误..除非实际定义了该路径,并且无法获取对象中属性的路径。如果
this
this.is
this.is.just
etc is
未定义的
javascript将抛出一个错误-否则
this.is.just.a.test
将导致某种结果(一个对象或原语)-并且没有回溯的概念来查看我们如何到达这个最终对象,因为可能有多个“父对象”") ... 简而言之,你不能。这几乎可以肯定是一个XY问题。你认为你需要这个的目的是什么?我试图创建一个节点包,允许你用点符号浏览文件系统。因此,最终目标是require(dn(src.script.js))=require(“src/script.js”)dn是一个函数;点表示法用于访问对象的属性。您试图将该表示法用于javascript解析器不支持的目的。这是行不通的。这难道不要求对象本身是代理吗?这不仅仅适用于所有开箱即用的对象。这不能同时是两件事e、 它可以是一个普通对象,工作原理与普通对象类似,也可以是一个特殊对象,在这里使用代理实现,它返回点路径,但不能同时返回点路径。这难道不要求对象本身是代理吗?这不仅仅适用于所有开箱即用的对象。它不能同时是两件事。它可以是一个普通对象,也可以是其工作原理类似于使用代理实现的常规对象或特殊对象,该代理返回点路径,但不能同时返回点路径和点路径。