Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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 - Fatal编程技术网

获取javascript中函数声明的路径

获取javascript中函数声明的路径,javascript,Javascript,例如,给定 // foo.js function bar() { ... } 如何实现以下功能: function getPathOf(func) { return ... } console.log(getPathOf(foo.bar)) // Prints: "foo.js:1:1" 也就是说,如何获取给定函数的源文件路径、行号和列号 我知道Function.name给出了函数的名称,我也看到过诸如chai.js之类的断言库在打印堆栈跟踪时打印函数的路径。唯一公开当前行号

例如,给定

// foo.js
function bar() {
    ...
}
如何实现以下功能:

function getPathOf(func) {
    return ...
}
console.log(getPathOf(foo.bar)) // Prints: "foo.js:1:1"
也就是说,如何获取给定函数的源文件路径、行号和列号


我知道Function.name给出了函数的名称,我也看到过诸如chai.js之类的断言库在打印堆栈跟踪时打印函数的路径。

唯一公开当前行号和文件的表达式是
new Error

 console.log((new Error()).stack);
这就是库生成堆栈跟踪的方式,没有其他方法可以获得它


我猜是这样的:

 fs.readFileSync("foo.js").indexOf(func.toString())

可能会以某种方式工作,但这很难看,没有真正的用途。

除非有办法使函数抛出一个错误,然后您可以使用该错误获取文件路径,否则我认为这是不可能的。