我如何通过非'这个'函数的上下文

时间:2016-06-27 16:57:18

标签: javascript

这与foo.a无关,thisfunc.apply不适用(没有双关语)。

我需要将函数的当前上下文传递给另一个函数,我的意思是我需要访问函数中的命名局部变量。

这是一个有点人为的例子:

func.call

如何将局部变量function doSomething(f){ eval(f) } function test(callback){ doSomething("callback.apply(1, 2)") } test(function(a, b){ console.log(a + b); }) 传递给callback,以便doSomething可以使用 - 我知道这是一个人为的例子。这甚至可能吗?

我知道嵌套的上下文会继续存在,所以如果我在eval中声明doSomething,那就行了。然而,这对我没有帮助。

2 个答案:

答案 0 :(得分:1)

如果你真的想要使用eval ...你可以用字符串格式创建一个IIFE,并传递你想要的参数,几乎就像你之前那样:



function doSomething(f) {
  eval(f)
}

function test(callback) {
  doSomething('(' + callback.toString() + ')(1, 2)');
}

test(function(a, b) {
  console.log(a + b);
})




答案 1 :(得分:-1)

bind适用于你

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