2011-12-14 4 views
2

동적 함수 내에서 "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; 
} 

문제 :

이 [ "변수 이름"] 당신은 "이"을 원하는 정적 함수

+1

'this'는 클래스의 인스턴스를 생성했음을 의미합니다. 클래스 인스턴스는 yourClass.convertToDynamicString()을 수행 할 때 발생하지 않습니다. – Frank

답변

5

확실하지 작동하지 않습니다 정적 함수가 포함 된 "Foo"라는 클래스가 있다고 가정하면 Foo[str];

정적 로컬 객체를 만듭니다.

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

그런 다음 "_this"를 사용하십시오.

0

정적 함수에 필요한 모든 것을 인스턴스에서 (인수로) 전달할 수 있습니다. 즉, 인스턴스는 통계를보고 참조 할 수 있지만 정적 함수는 특정 인스턴스를 보거나 참조 할 수 없습니다.

0

당신이 정적 클래스의 속성을 참조해야 할 경우 정적 클래스의 인스턴스를 참조 할 경우에 당신은 당신이 말한대로 방법이 (없다
StaticClassName.staticProperty

public static class MyClass{ 
    public static myProperty:* 

    .... 

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

    } 

을 사용할 수 있습니다) 키워드를 사용하고 있습니다. 어쨌든 해결 방법이 있습니다. 당신이 예를 매개 변수를 선언하고 정적 메서드 여기

에 인스턴스를 전달 할 수있는 코드입니다 :

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) 

희망이 방법으로 호출 할 수 있습니다 당신.
안녕!
루크