我正在尝试使用 console.log()
将对象打印到控制台以查看值。我看到函数是这样打印的。
variable1:
title:
"hello world!!!"
variable2:
callback: ƒ callback()
length: 0
name: "callback"
prototype:
constructor: ƒ callback()
[[Prototype]]: Object
arguments: (...)
caller: (...)
[[FunctionLocation]]: functions_mapper.ts:10
有没有办法获得确切的函数定义而不是位置?我的用例不仅仅是输出和查看,而是将其下载到文件中。我怎样才能做到这一点?谢谢!!!
PS:执行variable2.callback.toString()给出了函数定义,但是该对象以嵌套方式具有不同类型的变量。而我们并不知道他们的存在。从控制台执行 copy(object)
时给出 variable2: {}
。如何让它存储函数定义?我们是否必须转到每个嵌套变量,检查它是否是一个函数,然后调用 toString() 方法?
最佳答案
Function.prototype.toString
应该可以满足您的需求。
Function.prototype.toString.call(function xxx() { return 1; })
> 'function xxx() { return 1; }'
您可以只在函数上调用 .toString()
- 换句话说,在您的示例中调用 callback.toString()
- 在 99.99% 的情况下也是如此,但是 Function.prototype.toString
更能保证正常工作(可以想象,函数的 .toString()
可能已被替换为标准实现之外的其他内容)。
关于JavaScript:如何获取给定函数对象的函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72251138/