Actionscript3: переменная существует?

Если Вы проявляете подход Разработки через тестирование, то Ваш код только становится допускающим повторное использование как Ваш осуществлять рефакторинг на основе предстоящих сценариев.

Лично я нахожу, что постоянно рефакторинг производит более чистый код, чем попытка пересмотреть, для каких сценариев я должен кодировать конкретный класс.

11
задан Brad Larson 21 February 2014 в 20:43
поделиться

3 ответа

Кстати, если вам интересно почему мне нужно проверить, есть ли переменная существует или нет, я планирую о передаче переменных в 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 .

5
ответ дан 3 December 2019 в 07:13
поделиться

Ответ 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 );

Это должно охватывать вашу ситуацию . Но я не знаю никакого способа проверить существование переменной так, как вы пытаетесь сделать, просто сделав ссылку непосредственно на переменную. Я считаю, что вы должны ссылаться на него через его объем.

12
ответ дан 3 December 2019 в 07:13
поделиться

феномы, вероятно, наиболее подходящие. (Мне, вероятно, следует изменить часть моего кода, чтобы использовать этот метод). Но метод, который я в настоящее время использую для классов:

try {
  if(this["myFunction") {
    this["myFunction"]();
  }
catch(e:Error) {}

, не самый элегантный, поскольку он генерирует исключения.

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

0
ответ дан 3 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: