使用.call()/.apply()时,函数参数在哪里?

luk*_*nis 1 javascript

我遇到了一种情况,我需要使用.call()或.apply()调用另一个函数,如下所示:

function b() {
  alert(arg);
}
Run Code Online (Sandbox Code Playgroud)

然后

function a(arg) {
  b.call();
}
a(123);
Run Code Online (Sandbox Code Playgroud)

函数b被调用,但不能访问arg.没关系,我可以通过范围..是吗?

function a(arg) {
  b.call(this);
}
a(123);
Run Code Online (Sandbox Code Playgroud)

仍然没有 - 我无法从函数b 访问arg.我该怎么做?

更新:我不想修改b功能:-)

mea*_*gar 6

您仍然需要通过call(单独)或apply(作为数组)传递参数:

function a(arg1, arg2, arg3) {
  b.call(this, arg1, arg2, arg3);
  // or 
  b.apply(this, arguments)
  // or
  b.apply(this, [arg1, arg2, arg3]);
}
Run Code Online (Sandbox Code Playgroud)

当然,没有任何关于你的情况建议实际使用 callapply:只是自己调用函数.

function a(arg) {
  b(arg);
}
Run Code Online (Sandbox Code Playgroud)