JavaScript:如何获取给定函数对象的函数定义

标签 javascript

我正在尝试使用 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/

相关文章:

javascript - 如何禁用 datePicker 自动填充功能

javascript - 自定义 JavaScript 对象键

javascript - 无法从 IE11 中的受信任站点下载 Blob

javascript - Node js 没有正确返回函数的值

javascript - 需要 kendoUI 模板类型 ="text/x-kendo-template"?

javascript - WebGL:INVALID_OPERATION:readPixels:ArrayBufferView 对于尺寸来说不够大

javascript - React - 子路由未加载

javascript - Blogger 在 'html' 和 'compose' 模式之间切换时自动包含 href 标签

javascript - 如何在 Javascript 中迭代数组键?

javascript - 使用 TypeScript 1.5 的 Angular 2 服务注入(inject)