[英]How do I pass a non 'this' context to a function
這與this
無關,因為func.apply
和func.call
不適用( func.apply
關語)。
我需要將一個函數的當前上下文傳遞給另一個函數,這意味着我需要訪問一個函數中的命名局部變量。
這是一個人為的例子:
function doSomething(f){
eval(f)
}
function test(callback){
doSomething("callback.apply(1, 2)")
}
test(function(a, b){
console.log(a + b);
})
我如何將局部變量callback
給doSomething
以便它可以用於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.