トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     関数クロージャ内のthis参照について
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
imajuk
Åê¹ÆNo.38515
投稿日時: 2008-4-22 14:43
新米
居住地: Tokyo
投稿: 6
使用環境:
関数クロージャ内のthis参照について
関数クロージャ内のthis参照について質問があります。

以下のようなコードがあったとき、
package
{
	public class
	{
		private function methodA():void
		{
		}
		private function test():void
		{
    			var f:Function = 	function()
		        					{
		        						trace(this);
		        					}
		        f();
        	}
	}
}


メソッド'test'を実行すると以下のような出力が得られます。
[object global]


このケースで、関数クロージャ内でのthisが何を指しているのかがよくわかりません。
自分の理解を総動員して2つの仮説を立ててみました。

●仮説A
このthisは関数クロージャのアクティベーションオブジェクトを指している。
アクティベーションオブジェクトをtraceするとobject global と出力されるのかもしれない。

●仮説B
このthisはトップレベルのグローバルを指している。
アクティベーションオブジェクトはthisを解決しないのかもしれない。
よって、
[関数クロージャのアクティベーションオブジェクト]

[メソッド'test'のアクティベーションオブジェクト]

[グローバルオブジェクト]
の順番でスコープチェーンをたどりグローバルオブジェクトに達している



自分としては仮説Bかなとも思うのですが、
そうすると、グローバルオブジェクトの前に
メソッド'test'のスコープでthisが解決されるはずです。

どちらの仮説も間違っているかもしれません。
本当のところはどうなんでしょうか?

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » 関数クロージャ内のthis参照について imajuk 2008-4-22 14:43
     Re: 関数クロージャ内のthis参照について nioia321 2008-4-22 15:37
       Re: 関数クロージャ内のthis参照について imajuk 2008-4-22 16:12
         Re: 関数クロージャ内のthis参照について nioia321 2008-4-22 20:43
         Re: 関数クロージャ内のthis参照について Fumio 2008-4-22 22:07
           Re: 関数クロージャ内のthis参照について imajuk 2008-4-22 22:40

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops