()的問題,我研究了下面的代碼登錄申請的JavaScript
console.log.apply(console, arguments);
什麼是apply()
這裏的目的是什麼?
爲什麼不只是console.log("message", arguments)
?
感謝。
()的問題,我研究了下面的代碼登錄申請的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