setTimeout (式、遅延時間)
setTimeout (式、インタラクション時間)
遅延時間/インタラクション時間はミリ秒単位です (1000ms=1s) setTimeout は実行中にロードされます 指定された時間を遅延させた後、式を 1 回だけ実行します一度
setTimeout 実行すると、読み込み以降、指定された時間ごとに式
1 が実行されます。
コードを実行します:
var i=0;
setTimeout("i =1;alert(i)", 1000);
関数を実行します:
var i=0;
setTimeout(function(){i =1;alert(i);},1000);
//上記の 2 つの方法の違い。
ここに別の実行関数があります:
var i=0;
関数 test(){
i =1;
}
setTimeout("test()",1000);
は次のようにすることもできます:
setTimeout(test,1000);
概要:
setTimeout のプロトタイプは次のとおりです:
iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage ])
setTimeout 2 つの形式があります
setTimeout(code,interval)
setTimeout(func,interval,args)
code は文字列
func は関数です。
「関数」の意味はステートメントではなく式であることに注意してください。
たとえば、関数を定期的に実行する場合は、
function a(){
//...
}
は、
setTimeout("a()",1000)
または
setTimeout(a,1000)
として記述できます。ここで、2 番目の形式では a であることに注意してください。a() とは書かないでください。
ここに何を書いても、展開するには変数である必要があります。特定の関数を指す; それが関数である場合、その戻り値は次でなければなりません。それは関数です
2. setTimeout を使用して setInterval
の関数を実装します。アイデアは非常に単純です。再帰に似た、継続的に自身を実行する関数内の関数
var i=0;
function xilou(){
i =1;
if( i>10){alert(i);return;}
setTimeout("xilou ()",1000);
//これも使用できます
//setTimeout(xilou,1000);
}
3. クラスで setTimeout を使用します
ついに本題に到達しました。実際、授業で使用するときに誰もが遭遇する問題は、この問題が解決されていれば、心配する必要はありません。
ははは。それを分析してみましょう:
function xilou(){
this.name="xilou";
this.sex="男性";
}
xilou.prototype.count=function() {
this.num =1;
alert(this.num);
if(this.num>10){return;}
//以下の 4 つのメソッドを 1 つずつ使用してテストします。振り向く 。
setTimeout("this.count()",1000);//A: 次の x.count() が呼び出されるときにエラーが発生します: オブジェクトはこのプロパティまたはメソッドをサポートしていません。
setTimeout("count()",1000);//B: エラー表示: オブジェクトがありません
setTimeout(count,1000);//C: エラー表示: 'count' が定義されていません
/ / 以下は 4 番目の型です
var self=this;
setTimeout(function(){self.count();},1000);//D: 正しい
}
var x=new xilou();
x.count();
エラー分析:
A: のこれは、実際には現在のインスタンス オブジェクトではなく、ウィンドウ オブジェクトを参照します。
B: と C: の count() と count は、実際には The function of という名前の別のオブジェクトを参照します。 count() ですが、window.count() にすることもできます。window.count() は count() として省略できるためです。
D: 変数 self を現在のインスタンス オブジェクトにポイントすることで、JS 解析エンジンがこれは誰のことを指しますか?
とはいえ、setTimeout("this.count()",1000) の this が window オブジェクトを参照していることはわかっていますが、なぜそれが
window オブジェクトなのかはまだ理解できません^ _^ (少しめまいがします...)
次に、この setTimeout がどのように定義されているかを想像できます:
setTimeout は window のメソッドで、完全な名前は次のようになります: window.setTimeout()
これは次のとおりです。
window.setTimeout =function(vCode, iMilliSeconds [ , sLanguage]){
//....コード
return timer//マーカーを返します
}
これが渡されるとsetTimeout() の時間は、もちろん、それが属する現在のオブジェクト ウィンドウを指します。