赤間です。

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