* コールバック関数はグローバルスコープで実行される [#dc5f54ce]

 var Foo = function () {
   this.num = 1;
   this.alertNum      = function () { alert(this.num); }
   this.alertNumLater = function () { setTimeout(this.alertNum, 1000); }
 };
 
 var num = 2;
 var foo = new Foo;
 foo.alertNum();       // 1
 foo.alertNumLater();  // 2

- showNumLater()から呼ばれるコールバック関数 showNum()、すなわち function () { alert(this.num); } はグローバルスコープで実行される。
- よって、this.numはグローバルオブジェクトであり、this.numはFoo.numではない。
showNumLater()から呼ばれるコールバック関数 showNum()、すなわち function () { alert(this.num); } はグローバルスコープで実行される。よって、this.numはグローバルオブジェクトであり、this.numはFoo.numではない。

以下の例ではグローバルのfoo()が呼ばれる。
 function foo() { console.log("1"); }
 function bar() { 
   function foo() { console.log("2"); }; 
   setTimeout("foo()", 1000);
 } 
 bar(); // 1
↑の例ではグローバルのfoo()が呼ばれる。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS