나는 어떻게 재정의 setter 기능 런타임 시에 actionscript?
-
03-07-2019 - |
문제
가 있으로 클래스 세터 및 getter 능합니다.내가 조정할 필요가 있는 하나의 클래스의 인스턴스는 세터 기능을 처리하기 전에 입력 할당하는 지역 변수.
또,더 정교한 방법으로,어떻게 해야 하는 대신에 사용$$$에서는 아래의 예?
class MyClass{
private var _legend:Array;
function set legend(legend:Array):void{
_legend= legend;
}
function get legend():Array{
return _legend;
}
function someFunction():void{
foo();
}
}
var mc:MyClass = new MyClass();
mc.someFunction = function():void{
bar();
}
mc.$$$ = new function(legend:Array):void{
_legend = process(legend);
}
해결책
일반적으로 당신은 서브 클래스 MyClass 수정하는 행위(다형성)의 MyClass.
class MySubClass extends MyClass {
function set legend(legend:Array):void{
// do your checking here. Then call the
// setter in the super class.
super.legend = legend;
}
}
다른 팁
왜 당신이 통과 인스턴스를 처리합니다.
mc.legend = process(legend);
이것이 가능하지 않은 경우,수정할 수 있습니 한결같이 끈기와 열정의 길을 걸 MyClass 과 선택적 부울 값을 처리합니다.
function set legend(legend:Array, flag:bool = false):void{
_legend = flag ? process(legend) : legend;
}
참고하는 시제품이 상속을 제한하지 않습 자체 특정 인스턴스입니다.에서 문서:
프로토 타입의 유산만 상속 메커니즘의 이전 버전에서 ActionScript 및을 제공하는 다른 형태의 상속 ActionScript3.0.각 클래스에는 관련된 프로토타입 개체의 속성 및 프로토타입 개체가 공유하는 모든 클래스의 인스턴스.
제휴하지 않습니다 StackOverflow