为了账号安全,请及时绑定邮箱和手机立即绑定

请问js能知道当前定义的函数名吗,或者调用它时用到的函数名?

请问js能知道当前定义的函数名吗,或者调用它时用到的函数名?

繁华开满天机 2023-04-17 18:14:57
主要是在jsonp回调的时候会用到,对于一个有时序要求的jsonp回调函数,我需要从函数名里知道它到底是哪一个请求的回调,比如var pos = 0;setInterval(function () {    var script = document.createElement('script');     script.src = 'http://example.com/xxx.jsonp?callback=callback_' + pos;         window['callback_' + pos] = function (o) {         ....     };         document.body.appendChild(script);          pos ++; }, 10000);我需要在window['callback_' + pos]的函数体里知道,我现在回调的是哪一个pos传过来的结果。
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

function func_know_father(father) {     return function () { alert(father); }
}

a = func_know_father("a");a();
b = func_know_father("b");b();//--你大概可以这么用--function jsonp_func(pos){    return function (o) {        //do sth.
        //access pos
    };
}setInterval(function() {    //...
    window['callback_' + pos] = jsonp_func(pos);
});

用闭包把需要的变量绑上去就行了。


查看完整回答
反对 回复 2023-04-20
?
FFIVE

TA贡献1797条经验 获得超6个赞

让后端把pos通过参数传进去。

如果要用js获取function的名称的话,可以这样:
非ie下用this.name,ie下只能用this.toString(),然后正则去找。

不过你现在的情况不太适用,因为'callback_' + pos只是这个function的变量,这个function其实是个匿名函数,所以并不能取到function的名称。


查看完整回答
反对 回复 2023-04-20
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

得到当前执行函数的的函数名----arguments.callee

(function(){    //arguments.callee就是当前的匿名函数的引用
   console.log(arguments.callee);
})();

得到调用该函数的函数名--------当前函数名.caller

function a(){    //a.caller得到的是b函数的引用
    console.log(a.caller);
}function b(){
    a();
}
b();


查看完整回答
反对 回复 2023-04-20
  • 3 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信