(io studio il seguente codice di fare il loginverificare) domanda per javascript
console.log.apply(console, arguments);
Qual è lo scopo della apply()
qui?
Perché non solo console.log("message", arguments)
?
Grazie.
(io studio il seguente codice di fare il loginverificare) domanda per javascript
console.log.apply(console, arguments);
Qual è lo scopo della apply()
qui?
Perché non solo console.log("message", arguments)
?
Grazie.
La funzione apply()
chiama un'altra funzione con un dato valore this
e arguments
fornito come un array.
La ragione di un implicito func.apply(obj, args)
è assicurarsi che all'interno func()
, this
riferisce a obj
.
console.log("message", arguments)
chiama log
con due argomenti, "messaggio" e gli argomenti oggetto di matrice simile.
console.log.apply(console, arguments);
chiama con n
argomenti, dove n
è la lunghezza degli argomenti oggetto array simile. In altre parole, gli argomenti vengono scartati in singoli argomenti. Il contesto del metodo è console
. Es .:
function foo(a, b, c)
{
console.log.apply(console, arguments);
}
foo(1,2,3);
è più o meno equivalente a:
console.log(1,2,3);
Penso che sia la risposta non ha spiegato perché. Il vero uso brillante di questo modo di programmare.
Non mi piaceva la prima risposta votata, non riuscivo a capirlo nemmeno leggendo tre volte e la seconda mi sembra incompleta.
Penso che lo scopo principale di scrivere in questo modo sia di utilizzarlo all'interno di una funzione (o di una chiusura).
Quindi, questa riga ha senso solo nel logger personalizzato: console.log.apply (console, argomenti);
Probabilmente è stato un approccio migliore che scrivere qualcosa del genere:
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);
}
Si prega di spiegare il down-voto. –
Per compatibilità con IE9 'console.log.apply (console, argomenti);' può essere cambiato in 'Function.prototype.apply.call (console.log, console, argomenti);' – Victor