[英]Test in which function a callback is executed
我正在嘗試測試此回調函數在哪個函數中執行。 它應該返回一個布爾值。 我希望你明白我的意思。
這里的代碼示例:
function test(par, callback) {
// ...
if (typeof callback == 'function') { // make sure the callback is a function
callback.call(this);
}
}
test("par", function() {
console.log("Test if in function test: " + "<if this is in function test>");
});
這類似於instanceof嗎?
自刪除arguments.caller
以來,存在一種非標准的方法。
function test(par, callback) { // ... if (typeof callback == 'function') { // make sure the callback is a function callback.call(this); } } test("par", function cb() { var isTestCaller = cb.caller === test; console.log("Test if in function test: " + isTestCaller); });
通過錯誤堆棧(仍然是非標准的)執行此操作的另一種可能方法:
var checkCaller = function(fnName) { var e = new Error(); var caller = e.stack.split('\\n')[2].trim().split(' ')[1]; return caller === fnName; } function wrapper(){ console.log(checkCaller('wrapper')); } wrapper();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.