繁華開滿天機(jī)
2023-04-17 18:14:57
主要是在jsonp回調(diào)的時(shí)候會(huì)用到,對(duì)于一個(gè)有時(shí)序要求的jsonp回調(diào)函數(shù),我需要從函數(shù)名里知道它到底是哪一個(gè)請(qǐng)求的回調(diào),比如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]的函數(shù)體里知道,我現(xiàn)在回調(diào)的是哪一個(gè)pos傳過來的結(jié)果。
3 回答

largeQ
TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊
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); });
用閉包把需要的變量綁上去就行了。

FFIVE
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
讓后端把pos通過參數(shù)傳進(jìn)去。
如果要用js獲取function的名稱的話,可以這樣:
非ie下用this.name,ie下只能用this.toString(),然后正則去找。
不過你現(xiàn)在的情況不太適用,因?yàn)?#39;callback_' + pos只是這個(gè)function的變量,這個(gè)function其實(shí)是個(gè)匿名函數(shù),所以并不能取到function的名稱。

慕姐4208626
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
得到當(dāng)前執(zhí)行函數(shù)的的函數(shù)名----arguments.callee
(function(){ //arguments.callee就是當(dāng)前的匿名函數(shù)的引用 console.log(arguments.callee); })();
得到調(diào)用該函數(shù)的函數(shù)名--------當(dāng)前函數(shù)名.caller
function a(){ //a.caller得到的是b函數(shù)的引用 console.log(a.caller); }function b(){ a(); } b();
添加回答
舉報(bào)
0/150
提交
取消