새로운 클래스를 생성한다.
constructorExcutingFunction은 new 인스턴스로 호출되지 않은 해당클래스의 생성자함수 자체를 직접 호출했을때 실행될 함수이다.
위의 예제에서 AnonymousA클래스는 함수 자체를 실행할때 constructorExcutingFunction이 createElement를 수행하도록 적용되어 있다.
그리고 AnonymousB는 AnonymousA 클래스를 상속하며, trace메소드는 AnonymousB에서 재정의 되어 있다.
-
createClassMethodstatic( className:String=null, extendClass:Class=null, staticObj:Object=null, protoObj:Object=null, constructorExcutingFunction:Function=null ):Class
-
methodChainMethodstatic( obj:Object, rest_parameter:...=null ):Object타겟 obj에 대해 method chain을 계속 수행한다. 기본적으로 이 메소드는 return 값이 해당 객체가 아닐경우, 이에대한 코드의 효율성을 꾀하기위해
계속적인 작업을 수행하기 위해 고안되었다. -
bracketMethodstatic( obj:Object ):Function타겟 obj에 대해 계속적인 bracket 방식으로 멤버에 대한 액세스를 수행한다.
이 메소드는 지정된 객체에 대해 parentheses notation 방식으로 코드 수행에 대한 간결성을 통해 해당 객체내의 멤버에 대한 무한대 재 호출을 가능토록 한다.
methodChain과 다르게, 메소드뿐만 아니라 속성에 대한 액세스 처리도 가능하며, 해당 객체에 대한 코드 사용시점에 유효성을 체크하기 때문에 속도가 빠르고, 범용성이 우수하다.
단점은 멤버에 대한 접근을 스트링으로 해야하기 때문에 직관성이 떨어진다. 첫 호출 인수는 반드시 함수의 멤버프로퍼티인 스트링이어야 하며, 만약 첫 인자값이 함수라면, 함수내에서 해당 타겟에 대한 thisObj를 사용하여 처리할 수 있다. 참조 :
- Global.Leturn -
callSuperMethod( superClass:Function, methodName:String, rest_parameter:...=null ):*수퍼클래스의 특정 메소드를 호출한다.
JS의 현재버전에서 super키워드를 지원하지 않으므로, 이 메소드는 public형태로 제공되고, 따라서 외부에서도 실행될 수 있지만
기본적으로 이 메소드는 클래스내부에서, 확장클래스에서 관련 메소드를 재정의하고 부모클래스의 특정 메소드를 호출하여, 메소드오브라이딩을
문제없이 수행하고자 할때 주로 사용된다.