FlashのActionScriptについて質問です。


(1)変数について
http://oshige.com/flash/note/archives/3_actionscript/33_/
ここに書いてあるローカル変数は、varを付けなければいけないそうです。(タイムライン変数はvarを省略可能と明記あり)
では、varを付け忘れたらどういう動作になるのでしょうか?

(2)thisについて
function example() {this}
上のように、functionの中にあるthisは何を指すんでしょうか?
example()を呼び出したムービクリップでしょうか?
また、function example()がカスタムクラス内に定義されている場合、thisの扱いは変わりますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/11/12 21:08:31
  • 終了:--

回答(2件)

id:jouno No.1

jouno回答回数280ベストアンサー獲得回数02005/11/13 13:57:35

ポイント50pt

varをつけないとグローバルスコープになります。


つまり、関数定義の外に同名の変数が存在した場合、関数内でvarで初期化した場合は、関数内でその変数に代入しても、関数の外の同名の元からあった変数は別の変数として扱われ、影響を受けません。


var a=”hello”;

function func(){ a=”nice”;}

func();

trace(a);

と、


var a=”hello”;

function func(){var a=”nice”;}

func();

trace(a);

との結果の違いです。前者のaは同じaですが、後者のaは二種類あります。


thisについては、関数の外では、flashの階層構造で、そのスクリプトが属しているオブジェクトです。タイムラインなら_rootです。

http://hima.chu.jp/flash/tips/whatisthis.htm

ここのthisは何をさしているのか

こちらも参照。


で関数の中の場合、その関数が、オブジェクトのコンストラクタとして使用された場合は、そのあたらしくつくられたオブジェクト自身を指します。


つまり、

example();

のときは関数の外でつかったthisと同じですが、

a = new example();

としたときは、exampleをコンストラクタとするオブジェクトaです。


どちらになるかは定義時点ではなくて関数の実行時に決まります。


クラスの中で、関数(メソッド)としてつかった場合は、そのクラスのインスタンスがメソッドの呼び出し元なので、thisになります。


手元の環境がparaflaなのでclassベースの文法の新しいバージョンだとちょっと違うかもしれませんが、だいたいこんな感じです。

こちらも。

id:router

ご回答ありがとう御座います。

2005/11/20 14:47:08
id:hal-u No.2

hal-u回答回数21ベストアンサー獲得回数02005/11/14 10:45:29

ポイント5pt

http://oshige.com/flash/note/archives/3_actionscript/33_/

Flash ActionScript入門ノート: 3.3 変数

(1)変数について

のリンク先にある説明の中ほどに以下のような記述があります。


「この例において、functionブロック内で変数vをvarステートメントで宣言せずに使うと変数vはタイムライン変数になってしまい、1行目の変数vの値を上書きしてしまいます。結果として、出力パネルにはどちらの値も15で書き出されます。

このことから、functionブロック内の変数をvarでローカル変数宣言するのとしないとでは、大きな違いがあることがわかります。」


つまり、varをつけ忘れても、他に同じ名前の変数が無ければ、別に何も変わらないし、重なっていれば問題が起こることもありえます。


(2)についてはわかりづらいのですが、クラス内での定義であれば、当然扱いは変わります。

id:router

ご回答ありがとう御座います。

2005/11/20 14:47:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません