Come che converte document.querySelectorAll('a')
da un NodeList
ad una serie regolare?
Questo è il codice che abbiamo,
[].slice.call(document.querySelectorAll('a'), 0)
Lets smontarlo prima,
[] // Array object
.slice // Accessing the function 'slice' present in the prototype of Array
.call // Accessing the function 'call' present in the prototype of function object(slice)
(document.querySelectorAll('a'),0)
// 'call' can have arguments like, (thisArg, arg1,arg2...n).
// So here we are passing the 'thisArg' as an array like object,
// that is a 'nodeList'. It will be served as 'this' object inside of slice function.
// And finally setting 'start' argument of slice as '0' and leaving the 'end'
// argument as 'undefined'
Fase: 1 Esecuzione di call
funzione
- All'interno
call
, altro rispetto allo thisArg
, il il resto degli argomenti verrà aggiunto a un elenco di argomenti.
- Ora la funzione
slice
sarà richiamato legando il suo valore come this
thisArg
(array come oggetto venuto dal document.querySelector
) e con la lista degli argomenti. cioè] argomento start
che contiene 0
Fase: 2 Esecuzione di slice
funzione chiamata all'interno di call
P.S Per una migliore comprensione del nostro scenario alcuni passi che sono necessari per il nostro contesto è stato ignorato dalla algoritmo proprietario di call e slice.
fonte
2016-03-15 17:45:11
'Array.prototype.slice.call (documento .querySelectorAll ('a')); 'è un modo corretto di scrivere il pezzo di codice che hai scritto. – user544262772