In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

スーパークラスからサブクラスの定数を取得する

スーパークラスからサブクラスの定数を取得する

this["constructor"].定数名 or constructor.定数名

@author tkinjo
Get Adobe Flash player
by tkinjo 28 Sep 2009
/**
 * Copyright tkinjo ( http://wonderfl.net/user/tkinjo )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/wxEK
 */

package  
{
	import flash.display.Sprite;
	import flash.text.TextField;
	
	/**
	 * スーパークラスからサブクラスの定数を取得する
	 * 
	 * this["constructor"].定数名 or constructor.定数名
	 * 
	 * @author tkinjo
	 */
	public class Main extends Sprite
	{
		
		public function Main() 
		{
			var textField:TextField = new TextField();
			addChild( textField );
			
			var a:A = new A();
			var b:B = new B();
			
			textField.appendText( "a.name = " + a.name + "\n" );
			textField.appendText( "b.name = " + b.name );
		}
		
	}
	
}

class A
{
	public static const NAME:String = "A";
	
	public var name:String;
	
	public function A() 
	{
		// B に定数が宣言されていない場合は undefined が返される。
		name = this["constructor"].NAME;
		
		//name = ( this as Object ).constructor;	// これでもいい。
		
		//name = constructor.NAME;	// 「未定義のプロパティ constructor へのアクセスです。」と出てコンパイルできない。
	}
}

class B extends A
{
	public static const NAME:String = "B";
}