簡體   English   中英

如何將非“ this”上下文傳遞給函數

[英]How do I pass a non 'this' context to a function

這與this無關,因為func.applyfunc.call不適用( func.apply關語)。

我需要將一個函數的當前上下文傳遞給另一個函數,這意味着我需要訪問一個函數中的命名局部變量。

這是一個人為的例子:

function doSomething(f){
    eval(f)
}
function test(callback){
    doSomething("callback.apply(1, 2)")
}
test(function(a, b){
    console.log(a + b);
})

我如何將局部變量callbackdoSomething以便它可以用於eval我知道這是一個人為的示例。 這有可能嗎?

我知道嵌套上下文會繼續存在,因此,如果我要在test聲明doSomething ,那么它將起作用。 但是,這對我沒有幫助。

如果您真的想使用eval ...,則可以創建字符串格式的IIFE,並以幾乎以前的方式傳入想要的參數:

 function doSomething(f) { eval(f) } function test(callback) { doSomething('(' + callback.toString() + ')(1, 2)'); } test(function(a, b) { console.log(a + b); }) 

綁定將為您工作

function doSomething(f){
    eval(f());
}
function test(callback){
    doSomething(callback.bind(null,1,2))
}
test(function(a, b){
    console.log(a + b);
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM