Macromedia Flash非公式テクニカルノート スコープチェーン
Platform: All Macromedia Flash Player 6は、スコープチェーンの概念を採用することになりました(ECMA-262仕様に準拠します)。これは、厳密なスコープというものが存在しなかったFlash Player 5からの大きな飛躍になります。 スコープチェーンは、ActionScriptオブジェクトのリストです。識別子を分析するに際しては、ActionScriptはスコープチェーンの最後の要素から遡って、識別子を検索していきます。 標準的なActionScriptでは、スコープチェーンは以下のようになります。
・グローバル変数 'with'アクションは、暫定的にオブジェクトをスコープチェーンの最後に追加します。'with'アクションの実行が終了すると、暫定オブジェクトはスコープチェーンから削除されます。 'function'が定義されると、現行のスコープチェーンはコピーされてfunctionオブジェクトに保存されます。'function'が呼出されると、スコープチェーンはそのfunctionオブジェクトのスコープチェーンに切り替わり、新規のローカル変数オブジェクトがその最後に追加されます。 Macromedia Flash 5では、ActionScriptの'function'のスコープは、つねにつぎのようなものでした。
・グローバル変数 スコープリストは、3要素を超えることはありません。ただし、'with'アクションが使用された場合を、除きます。これは、ECMA-262仕様とは異なるものでした。その結果として、メソッドのスコープはそれが設定されたMovieClipにあり、メソッドの定義された場所ではありませんでした。 Macromedia Flash Player 6では、MovieClipのメソッドをそのMovieClipの外部で定義すれば、メソッドのスコープチェーンはその外部オブジェクトを対象とし、MovieClipオブジェクトを含むことはありません。このため重要になるのが、'this'キーワードをメソッド本文で使用するということです。 ただし、従来との互換性はMacromedia Flash 5コンテンツについて保持されていることにご注意ください。Macromedia Flash 5では、スコープについてFlash 5 Playerで適用されていたのと同様の原則が使用されます。 出典 _____ 作成者: 野中文雄 Copyright © 2001 and beyond Fumio Nonaka All rights reserved. |
|||