我有一个对象数组。对象引用需要检查的属性。但是,属性是可选的,可能无法通过。这会导致错误。
以下是代码的大大简化版本:
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吧。”
答案 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的异步函数来保证数据最终可用?