2011-08-10 10 views
1

私は私はあなたが文字列var fn:String = "wat"としてゲッターの名前を保存してリターンを取得するために、後でそれを使用することができますAS3の変数にゲッター関数を割り当てることはできますか?

function get wat():int { 
... 
} 
var mmmh:Function=wat; // this (tries to) assign the wat returned value 
+0

あなたの目的が何かを説明すれば、おそらく誰かがあなたに回避策を与えるでしょう... – goliatone

答えて

1

まあ、私が知っている唯一の方法は、arguments.calleeでそれらの内部からゲッター/セッターの参照を取得しています。しかしそれはむしろ奇妙なことです。 :)

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import flash.utils.getTimer; 

    public class GetterTest extends Sprite 
    { 
     private var getterRef:Function; 
     private var setterRef:Function; 

     private var testValue:int = 0; 

     public function GetterTest() 
     { 
      stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
     } 

     private function onMouseDown(event:Event):void 
     { 
      if (getterRef != null) { 
       setterRef(getTimer()); 
       trace("references: test = ", getterRef()); 
      } else { 
       test = getTimer(); 
       trace("direct: test = ", test); 
      } 
     } 

     private function get test():int 
     { 
      trace("TEST! getter"); 
      getterRef = arguments.callee;   
      return testValue; 
     } 
     private function set test(value:int):void 
     {   
      trace("TEST! setter"); 
      setterRef = arguments.callee; 
      testValue = value; 
     } 
    } 
} 

上記の作業中、あなたの質問に対する正解は「しない」と思います。 :)

+0

、ほとんどが最後の文章のために受け入れられます:O –

0

のような何かをする方法がわからない

function yea():int { 
... 
} 
var cool:Function=yea; 

を行うことができますメソッドの値はmyObjectFromClass[fn]です。

0

達成しようとしていることがわかりません。

ゲッターへの参照を保持したいだけなら、クロージャー関数でラップすることができます。

var mmh:Function = function():int { return wat; }; 
関連する問題