gpt4 book ai didi

javascript - 打印 IIFE 的函数名私有(private)方法

转载 作者:行者123 更新时间:2023-12-02 14:05:53 25 4
gpt4 key购买 nike

此 Meteor 服务器代码将 printFuncName 作为 IIFE 的私有(private)方法。当从公共(public)方法调用它时,会给出错误:

TypeError: Cannot read property 'name' of null

为什么要这样做以及如何修复它以便打印调用它的函数名称?谢谢

funcObj = (function() {

const printFuncName = (str) => {
const info = str ? ' ' + str + ' ' : ' ';
console.log(arguments.callee.caller.name + info); //<---- Error line
};

return {
myPub: () => {
printFunctionName('info');
}

}

}());

最佳答案

警告:接下来是一个 hack。执行此操作的正确方法是将名称作为参数传递给函数。不过,它比 arguments.callee 方法更好,所以如果必须的话请使用它。

如果创建 Error 对象,则可以检查堆栈以获取函数名称链:

new Error().stack.split('\n')
[ 'Error',
' at repl:1:1',
' at sigintHandlersWrap (vm.js:22:35)',
' at sigintHandlersWrap (vm.js:96:12)',
' at ContextifyScript.Script.runInThisContext (vm.js:21:12)',
...]

您的调用者姓名以及文件和行/列信息将出现在该列表中。请注意,许多 JS 函数未命名,因此这是有限的。

关于javascript - 打印 IIFE 的函数名私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40052655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com