javascript - 在 JavaScript 中使用参数调用 apply 方法

标签 javascript arguments apply

我想使用 javascript apply() 方法调用一个函数。如果函数没有参数,这就可以正常工作。即

function test()
{
  console.log(this);
}

body = document.getElementsByTagName("body")[0]; // shortcut to body element

test.apply(body); // returns [object HTMLBodyElement]

但我似乎不能做同样的事情来调用一个有参数的函数:

function test(msg)
{
  console.log(msg);
}

body = document.getElementsByTagName("body")[0]; // shortcut to body element

test(this).apply(body); // mysteriously returns the correct result, then
// typeError: 'undefined' is not an object (evaluating "test(this).apply".

上面的示例完全是微不足道的,但我的问题的重点是:如何使用 apply() 方法调用带参数的函数。

最佳答案

apply接受两个参数:

test.apply(null, [body]);

第一个参数在执行函数时设置 this 的值。第二个是该函数的参数数组。

在您的示例中,您可以按如下方式重写它:

function test() {
    console.log(this);
}

并按如下方式调用它:

test.apply(this);

关于javascript - 在 JavaScript 中使用参数调用 apply 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7676768/

相关文章:

javascript - 路由更改时未捕获 DOMException hls.js React.js

javascript - D3 forceX/forceY 和 forceCenter 的区别

C++ 函数对象参数

java - 按参数类型?

javascript - 在 Javascript 中是否有等同于 .apply 的东西不会改变 this 的值?

python-3.x - 以特定于列的方式填充数字的 nan

javascript - 悬停在 Firefox 中不起作用

javascript - 检查用户现在是否触摸屏幕(JS)

javascript - 使用字符串参数调用 javascript 函数

r - R中数字数据帧的有序列名数据帧的更快方法