どのようにdocument.querySelectorAll('a')
a NodeList
から通常の配列に変換し
ますか?
これは私たちが持っているコードです、
[].slice.call(document.querySelectorAll('a'), 0)
まず解体しましょう
[] // 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'
ステップ:1 call
関数の実行
- 内部では
call
、以外thisArg
の残りの引数が引数リストに追加されます。
- これで、(オブジェクトのような配列がから来た)値と
引数リストを
slice
バインドすることにより、関数が呼び出されます。すなわち] を含む引数this
thisArg
document.querySelector
start
0
ステップ:2 slice
内部で呼び出された関数の実行call
PSシナリオをよりよく理解するために、コンテキストに必要ないくつかの手順は、呼び出しとスライスの元のアルゴリズムから無視されています。
Array.prototype.slice.call(document.querySelectorAll('a'));
あなたが書いたコードのチャンクを書くための適切な方法です。