申请的JavaScript
问题描述:
()的问题,我研究了下面的代码登录申请的JavaScript
console.log.apply(console, arguments);
什么是apply()
这里的目的是什么?
为什么不只是console.log("message", arguments)
?
感谢。
答
apply()
函数调用另一个函数,给定的this
值和arguments
作为数组提供。
原因隐式func.apply(obj, args)
是确保内func()
,this
指obj
。
答
console.log("message", arguments)
调用log
带有两个参数“message”和类似数组的对象参数。
console.log.apply(console, arguments);
与n
参数,其中n
是阵列状的对象参数的长度调用它。换句话说,论据被解开成个别论点。该方法的上下文是console
。例如: -
function foo(a, b, c)
{
console.log.apply(console, arguments);
}
foo(1,2,3);
大致等同于:
console.log(1,2,3);
答
我认为这两个答案没有解释为什么。这种方式真正有光泽的使用来编程。
我不喜欢第一个投票的答案,我甚至不能理解它甚至读了三次,第二个感觉不完整。
我认为这种方式编写的主要目的是在函数(或闭包)中使用它。
因此,这条线只在您的自定义记录器中有意义:console.log.apply(console,arguments);
可能比写这样的一个更好的办法:
function my_worse_way_to_log_dynamic_args ([several dynamic arguments])
{
// loop each argument
// call console.log for each one
}
function my_better_way_to_log_dynamic_args ([several dynamic arguments])
{
console.log.apply(console, arguments);
}
请解释反对票。 – 2012-03-13 18:34:37