检查嵌套对象属性是否存在(并分配给不存在的嵌套属性)

时间:2011-03-09 15:25:59

标签: flex actionscript-3

(嵌套属性存在flex在谷歌中没有任何相关性。)

如何检查obj.x.y.z的存在 - 尝试catch块是唯一的选择?

我想出了以下内容 - 它不起作用:

    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或obj.x.y是否存在之前分配给obj.x.y.z。我想出了以下的工作,但不想重新发明轮子。是否已经有一种标准的方法:

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 :(得分:0)

不,在AS3中没有标准的方法。你需要一个像这样的自定义助手才能做到这一点。