2
우리는 그래서 당신은 그 클래스 개체에서 개체를 만들 수 있습니다 Class 객체 (클래스를 참조하는 객체)가 :Class 객체가 참조하는 클래스를 확인하는 방법은 무엇입니까?
var classObject:Class = package.to.class.AClass;
var objectFromClass:AClass = new classObject();
는 지금, 나는 classObject
참조하는 어떤 객체 알고 싶어요. 예 :
function Creator(classObject:Class):AClass
{
// here I want to know what class is referenced by classObject
return new classObject();
}
var classObject:Class = package.to.class.AClass;
var objectFromClass:AClass = Creator(classObject);
이 방법은 작동하지만, AClass
을 참조하지 않는 클래스 개체를 전달하면 어떻게됩니까? 나는 이것이 일어나고 있는지를 알고 싶다. 문자열 이 기능은 예를 들어, 클래스의 이름을 반환합니다 :
--- 편집 ---
것은 내가이 기능
flash.utils.getQualifiedClassName (* 값)을 발견 검색
function Creator(classObject:Class):AClass
{
var anInstance:AClass = new AClass();
var className:String = flash.utils.getQualifiedClassName(anInstance);
var classObjectName:String = flash.utils.getQualifiedClassName(classObject);
// here className and classObjectName are 'AClass' :)
if (className != classObjectName)
throw new Error('The classes are different');
return new classObject();
}
var classObject:Class = package.to.class.AClass;
var objectFromClass:AClass = Creator(classObject);
:
var name:String = '';
// name = ''
name = flash.utils.getQualifiedClassName(package.to.class.AClass);
// name = 'AClass'
name = ''
// name = ''
var anInstance:AClass = new AClass();
name = flash.utils.getQualifiedClassName(anInstance);
// name = 'AClass'
그래서, 내가 할 일은 그 함수의 결과를 비교하는 것입니다
는 --- EDIT 2 ---
또 다른 방법은 Object 클래스의 생성자 속성을 사용하는 것입니다:
function Creator(classObject:Class):AClass
{
var tempInstance:AClass = new AClass();
var tempClassObject:Class = Object(tempInstance).constructor;
if (classObject != tempClassObject)
throw new Error('The classes are different');
return new classObject();
}
AClass로 캐스팅하고 null인지 확인하는 대신 왜 'is'연산자를 사용합니까? – Turambar