我能做到
function yea ():int {
...
}
var cool:Function=yea;
我不知道该怎么做
function get wat ():int {
...
}
var mmmh:Function=wat; // this (tries to) assign the wat returned value
答案 0 :(得分:2)
嗯,我知道的唯一方法是使用arguments.callee
从内部捕获getter / setter引用。但这是一件相当奇怪的事情。 :)
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;
}
}
}
虽然上述方法有效,但我认为你问题的正确答案是“不要”。 :)
答案 1 :(得分:0)
您可以将getter的名称保存为字符串var fn:String = "wat"
,然后稍后使用它来检索myObjectFromClass[fn]
方法的返回值。
答案 2 :(得分:0)
我不确定你想要完成的是什么。
如果你只想保留对getter的引用,你可以将它包装在一个闭包函数中。
var mmh:Function = function():int { return wat; };