我如何传递一个非'this'上下文到函数

How do I pass a non 'this' context to a function

本文关键字:this 上下文 函数 一个 何传递      更新时间:2023-09-26

这与this无关,因此func.applyfunc.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 -我认识到这是一个人为的例子。这可能吗?

我知道嵌套上下文延续,所以如果我要在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);
})

bind for u

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