Если Вы проявляете подход Разработки через тестирование, то Ваш код только становится допускающим повторное использование как Ваш осуществлять рефакторинг на основе предстоящих сценариев.
Лично я нахожу, что постоянно рефакторинг производит более чистый код, чем попытка пересмотреть, для каких сценариев я должен кодировать конкретный класс.
Кстати, если вам интересно почему мне нужно проверить, есть ли переменная существует или нет, я планирую о передаче переменных в SWF в его URL, поэтому мне нужно убедиться, что переменные существуют и обрабатывают код правильно, если они не проходят.
Тогда вы принимаете неправильный подход. Вот правильный способ ™ прочитать и проверить параметры SWF вместе со значением по умолчанию, если они не существуют:
private function parameter(name:String, defaultValue:String):String
{
// Get parameter list
var paramObj:Object = LoaderInfo(stage.loaderInfo).parameters;
// Check if parameter exists
if(paramObj.hasOwnProperty(name) && paramObj[name] != "")
return paramObj[name];
else
return defaultValue;
}
Внимание! Поскольку это относится к свойству 'stage', используйте этот код либо из класса документа, либо после Event.ADDED_TO_STAGE
.
Ответ LiraNuna определенно является правильным способом доступа к параметрам загрузчика. Однако, чтобы ответить на вопрос, как проверить наличие переменных (для потомков), это делается с помощью метода hasOwnProperty () , который существует для всех объектов:
// to check for this.myVariable
if ( this.hasOwnProperty( "myVariable" ) ) {
trace("myVariable exists");
} else {
//Variable doesn't exist, so declare it now
trace("declaring variable now...");
this.myVariable = "Default Value";
}
trace( this.myVariable );
Это должно охватывать вашу ситуацию . Но я не знаю никакого способа проверить существование переменной так, как вы пытаетесь сделать, просто сделав ссылку непосредственно на переменную. Я считаю, что вы должны ссылаться на него через его объем.
феномы, вероятно, наиболее подходящие. (Мне, вероятно, следует изменить часть моего кода, чтобы использовать этот метод). Но метод, который я в настоящее время использую для классов:
try {
if(this["myFunction") {
this["myFunction"]();
}
catch(e:Error) {}
, не самый элегантный, поскольку он генерирует исключения.
Причина, по которой я использую этот вид кода, заключается в том, что мы немного динамически кодируем и злоупотребляем «включениями» в гибком коде для написания шаблонного кода.