setTimeout(function(obj){
alert( obj.a );
}, 2000, {a:1});
3 番目のパラメータがコールバック関数のパラメータ obj として渡されます。 。 1 は IE 以外のブラウザでポップアップ表示されます。これには、コールバック関数の実行コンテキストを解決するという利点があります。たとえば、オブジェクトのメソッドを呼び出したい場合、パラメータを介してオブジェクトを渡すことができます。
setTimeout(function(obj){
obj.method();
}, 2000, obj);
もちろん、次のように複数のパラメータをコールバック関数に渡すこともできます。 >
alert(a);
alert(b);
}, 2000, 1,2);
今回は 2 つのパラメータ 1,2 をコールバック関数に渡しました。 Firefox/Safari/Chrome/Opera の順に。必要に応じてさらに送信することもできます。
IE は 3 番目のパラメータをサポートしていませんが、Firefox と Safari/Chrome/Opera の間にはまだ違いがあります
alert(arguments.length);
}, 2000, 1,2); 🎜>
コールバック関数に 2 つのパラメータ 1 と 2 を渡し、実際のパラメータの長さを通知します
Firefox: 3
Safari/Chrome/Opera: 2
不思議です、明らかに渡されていますパラメータは 2 つありますが、Firefox で表示されるパラメータは 3 です。 3 番目のパラメーターを出力すると、それが数値であることがわかります (負の場合もあります)。
閉じる:
http://www.w3.org/TR/Window/
https://developer.mozilla.org/en/DOM/window.setTimeout
http://msdn.microsoft.com/en-us/library/ms536753(v=vs.85).aspx //IE で渡される setTimeout パラメータのバグを解決
コードをコピー
window.setTimeout = overrideFun(window.setTimeout);
window.setInterval = overrideFun(window.setInterval);
}) (
function(originalFun){
return function(code, late){
var args = [].slice.call(arguments, 2);
return originalFun(
function() {
if (typeof code == 'string') {
eval(code);
}
else {
code.apply(this, args); 🎜>}
}、
遅延
)
}
}
);
}