Re: var
赤間です。
kuno@gssm.otsuka.tsukuba.ac.jpさん wrote:
> だからsetTimeout()に文字列渡しちゃいけないと思ってます。関数渡
> せばスコープはまっとうに制御できるでしょ? なんでみんな文字列渡し
> たりevalしたりとか好きなのかなあ。
だから、「できない」のです。
次の2つのコードを比較してください。
このコードに期待することは10秒後に"hello"という文字を表示させることで
す。関数で渡す場合は「即座」に評価されることがわかると思います。
__(その1はここから)__
<script>
function TestObject(){
function _hello()
{
setTimeout( this.hello2(), 10000 ); //←ここが違う
}
function _hello2()
{
alert("hello");
}
this.hello = _hello;
this.hello2 = _hello2;
return this;
}
var oTO = new TestObject();
oTO.hello();
</script>
~~(その1はここまで)~~
__(その2はここから)__
<script>
function TestObject(){
function _hello()
{
setTimeout( "oTO.hello2()", 10000 ); //←ここが違う
}
function _hello2()
{
alert("hello");
}
this.hello = _hello;
this.hello2 = _hello2;
return this;
}
var oTO = new TestObject();
oTO.hello();
</script>
~~(その2はここまで)~~
--
赤間俊一 akama@home.so-net.ne.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735