0

jQuery を使用しない単純なクリック イベント スクリプトを探していたところ、便利なコードが見つかりました。これを使用して、このコードの独自のバリアントを作成しましたが、これは機能しますが、得られないことが 1 つあります。

[].forEach.call(document.querySelectorAll("a"), function (el) {
    el.addEventListener("click", function (ev) {
        ev.preventDefault();
        this.style.backgroundColor = "grey";
    })
});

このコード<a>は Web ページのすべての要素を取得し、背景色をグレーに変更するクリック イベントを追加します。

forEach.call()ただし、配列[]が空のときに実行される理由がわかりません。

誰かがこれがどのように機能するか説明できますか?

4

2 に答える 2

3

function.call()異なる で関数を実行しますthis

forEachあなたのコードは、メソッドを取得するために空の配列を作成しますArray.prototype.forEach(を記述call()してから、配列のような NodeList.

于 2013-06-13T12:33:49.117 に答える
2

[]配列ですが、forEachこの型で公開されているプロトタイプ関数を使用しています。

これは使用の省略形ですArray.prototype.forEach.call();

于 2013-06-13T12:38:44.547 に答える