引用尚未定义的属性

时间:2016-03-01 23:33:59

标签: javascript node.js

我有一个对象数组。对象引用需要检查的属性。但是,属性是可选的,可能无法通过。这会导致错误。

以下是代码的大大简化版本:

public class filename1 {

      public static void main (String args[])

        {

    try {

      fileName = "C:\\NetBeansProjects\\filename\\src\\filename\\filename.java";

      FileReader fr = new FileReader(fileName);

     BufferedReader br = new BufferedReader(fr);

        line = br.readLine();

        while (line !=null) {


       for( int i=0;i<line.length();i++)

         {            
           b=line.indexOf("/",i);         

           ee=line.indexOf("*",i);         
           if(b!=-1 && ee!=-1)

           v=line.indexOf("*/",i);
             if (v==-1)
              line=" ";
                  }


                System.out.println(line);


                 line = br.readLine(); 
                          }}

                  catch (IOException e)
               {   
                e.printStackTrace();

                  }
                }
                }

如何引用不存在的属性?我不想创建空属性,或将它们设置为null。如果他们没有被发送到应用程序,我想简单地避免擦洗它们。

我可以将元素创建为字符串,并在使用时将它们解析回属性路径,但我认为这是一种糟糕的方法。

我还在考虑使用ES6设置代理,但Chrome尚未使用最新规范进行更新。

我正在使用'prospect'数组作为一种类型的查找表来说,“嘿,如果发送了这个值,那就做X吧。”

2 个答案:

答案 0 :(得分:0)

我发现使用新引入的Proxy(ES6)在这里运行良好,并允许我设置陷阱来处理这些场景。 JS的非常酷的添加允许很大程度的抽象。

function Event(event) {
    var proxy = new Proxy(event, {

        get: function (target, property) {
            if (property in target) {
                return target[property];
            } else {
                return " ";
            }
        }
    });

    return proxy;
}



var event = new Event(sample_event);

答案 1 :(得分:-1)

使用Babel(也许通过Webpack或Browserify)编译ES6代码,问题解决了吗?

也许你可以使用Promise的异步函数来保证数据最终可用?