我想使用javascript的apply()方法来调用一个函数。如果这个函数没有参数,那么这样做是可以的。例如:
上面的例子非常简单,但我的问题是:如何使用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()方法来调用带有参数的函数。
test.apply(null, body)
在我的浏览器(Chrome 35)中会出错,但是test.apply(null, [body])
可以正常工作。 - FeifanZthis
。 - John Keyesfunction test(msg){..}
,我需要设置this
值,并且只想在msg
中获取消息值?test.call(newThisObj,'new this obj set');
值将在arguments
中而不是msg
中可用。 - techie_28test.apply(this, ['new this obj set']);
- John Keyes