2013-06-23 7 views
1

Предположим, у меня есть настраиваемая переменная объекта, которая установлена ​​как null, и я хочу проверить ее определение типа. Как мне это сделать?ActionScript check custom object defined type (not actual type)

var a:MyObject = null; 

// how do I check if a is MyObject? 
// 
// a is MyObject == false 
// a instanceof MyObject == false 
// getQualifiedClassName(a) <-- Exception 
// typeof(a) == "object" 
// describeType(a) <-- Exception 
// a.constructor <-- Exception 
// a.prototype <-- Exception 
+0

Я не думаю, что это возможно. Зачем вам вообще нужно проверять определение? – ndm

ответ

0

Я думаю, вы неправильно понимаете, как работают все эти примеры в вашем вопросе.

Они не проверяют тип, связанный с переменной - они проверяют тип экземпляра, назначенного этой переменной. Вот хороший пример того, почему ваши примеры не имеют смысла:

var prop:DisplayObject = new MovieClip(); 
trace(prop is MovieClip); // true 

Если это работает так, как вы думали, это, вы на самом деле получить false здесь.

Все, что вы делаете, когда создаете переменную и указываете ей тип, сообщает компилятору, какой тип экземпляров он ожидает увидеть назначенным этому свойству, и выкинуть ошибку, если что-то, что не является экземпляром для него назначается ожидаемый тип.

Я не думаю, что есть способ определить, какой тип ожидает переменная. Более того, я думаю, что если вы увидите необходимость проверки того, какой тип переменная ожидает во время выполнения, то вы делаете что-то ужасно неправильно.

+0

Как насчет того, чтобы описать тип (a) и проверить через factory.implementsInterface теги? Просто интересно, будет ли это работать. –

+0

@ san.chez Попробуйте. – Marty

+0

@ san.chez Я уже протестировал его и выбрал исключение – Ofir