静态函数中的动态变量名

时间:2011-12-14 22:09:00

标签: flash actionscript-3 flex flex4 flex4.5

考虑到你不能在动态函数中使用“this”,有没有办法在静态函数中包含动态变量。

我想做什么:

public static function convertToDynamicString(pString:String):String
{
    if(pString == "" || pString == null) return "";
    var re:RegExp = /(\{\w+\})/;
    var results:Array = pString.split(re);
    var dynamicString:String = "";
    for each(var pWord:String in results)
    {
        if(pWord.substr(0, 1) == "{") dynamicString += this[pWord.substring(1, (pWord.length - 1))];    
        else dynamicString += pWord;
    }
    return dynamicString;
}

问题:

此[“变量名称”]在静态函数中不起作用

3 个答案:

答案 0 :(得分:5)

不确定您想要“引用”的内容,但假设您有一个名为“Foo”的类包含您的静态函数,请使用Foo[str];

或者,创建一个静态本地对象:

private static var _this:Object = {//your dynamic stuff}

然后使用“_this”。

答案 1 :(得分:0)

您可以将所有内容传递给实例所需的静态函数(作为参数)。换句话说,实例可以查看和引用静态,但静态函数无法查看或引用特定实例。

答案 2 :(得分:0)

如果需要引用静态类的属性,可以使用
StaticClassName.staticProperty

public static class MyClass{
   public static myProperty:*

   ....

   public static function someFunction():void{
       MyClass.myProperty 
       }

   }

如果你想引用静态类中的实例,就没有办法(如你所说)使用 this 关键字。无论如何,有一个工作。您可以声明实例参数并将实例传递给静态方法

这是代码:

public static class Myclass{
    public static function myFunc(parm1:*,param2:*,instance:[type of the istance or generic *]):void{

   ....now you can use instance.property!!!!  
   }  
}

然后你可以这样称呼它

 MyClass.myFunc('foo','bar',this)

希望这可以帮到你。
再见!
路加