これがどのように機能するのかわかりません:
var links = [].slice.apply(document.getElementsByTagName('a'));
空の配列を作成しますが、残りを完全に取得することはできません。このスクリプトで実際に何をしslice
、実際に何をしますか?apply
これがどのように機能するのかわかりません:
var links = [].slice.apply(document.getElementsByTagName('a'));
空の配列を作成しますが、残りを完全に取得することはできません。このスクリプトで実際に何をしslice
、実際に何をしますか?apply
document.getElementsByTagName()
同様のDOMメソッドは、真の配列ではなく、配列のような構造体であるノードリストを返します。これは、真の配列に変換するための一般的なトリックです。またarguments
、別の配列のような構造である特殊変数とともに一般的に使用されます。Arrayオブジェクトのslice
メソッドは通常、配列を予期し、配列を返しますが、この方法では、技術的には配列ではないものを渡すことができます。もう少し読みやすく、間違いなくより良いバージョンはこれです:
Array.prototype.slice.apply(document.getElementsByTagName('a'));
これは基本的に、getElementsByTagNameから取得したnodeListオブジェクトを通常のjavascript配列に変換し、その上で配列メソッドを使用できるようにします。