проверка существования свойства вложенного объекта (и присвоение несуществующему вложенному свойству) - PullRequest
0 голосов
/ 09 марта 2011

(вложенное свойство существует flex, в Google ничего не найдено).

Как проверить наличие obj.x.y.z - единственная опция, блокирующая попытку?

Я придумал следующее - это не сработало:

    private function exists(obj:Object, ... args):Boolean {

      for (var n:int=0; n<args.length; n++) {
        if (obj[args[n]] == undefined)
          return false;
        if (n<(length-1))
          obj = obj[args[n]];
      }

      return true;  

    }

Второй частью этого будет назначение obj.x.y.z, прежде чем вы узнаете, существует ли obj.x или obj.x.y. Я придумал следующее, что работает , но не хочу изобретать велосипед. Есть ли уже стандартный способ сделать это:

private function set(obj_set:Object, obj:Object, ...args):void {

  for (var n:int=0; n<args.length; n++) {
    if (n < args.length-1) { 
      if (!obj.hasOwnProperty(args[n]))                          
        obj[args[n]] = new Object();
      obj = obj[args[n]];
      continue;
    }
    obj[args[n]] = obj_set;

  }

}

1 Ответ

0 голосов
/ 10 марта 2011

Нет, в AS3 нет стандартного способа сделать это.Для этого вам понадобится специальный помощник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...