私がする時 :
img.onload=fn;
関数 fn は を取得しargument[0] [object Event]
ます。
どうすればそれを回避できますか?
イベントオブジェクトを避けません。あなたはそれらを受け入れます。そうは言っても、使いたくない場合は使用する必要はありません。ブラウザーがonload
イベントで起動すると、リクエストの有無にかかわらず、イベント オブジェクトがハンドラーに渡されます。ご指摘のとおり、これはarguments
、ハンドラー パラメーターで特に名前を指定しなくても、配列に存在します。
ここにいる他の人が回答とコメントで指摘しているように、別の匿名関数を追加して、発生したイベントから応答コードをさらに削除できますが、個人的にはこれは本当に不要だと思います.
上記のコメントで @Yoshi が指摘したように、次のように動作します。
img.onload = function() {
fn.call(this)
};
これにより、現在のコンテキスト参照fn
を渡してメソッドが呼び出されます。this
繰り返しますが、このタイプのコードは、今日から 6 週間後、他の人や自分自身を混乱させる可能性があるため、個人的にはイベント オブジェクトに触れないようにします。
ジョナサン・サンプソンの回答に加えて、簡単な回避策を次のように行うことができます
img.onload = function() {
fn();
}
そうすることarguments
は、空の
フィドルを参照してください(javascriptコンソールを使用):http://jsfiddle.net/ZxSEX/