我工作的动态结构,作为一个基本的例子:测试动态对象是否有空字段的正确方法?
var myObj = {
"fruits" : {
"apples" : {
"color" : "red",
"price" : "$0.49"
}
},
"colors" : {}
};
所以我期待的是,例如水果,“橙色”不存在。我想测试它不存在,所以我可以添加它。
我在控制台中看到,如果您尝试访问不存在的“对象”,则会被告知“未定义”。
这就是我正在寻找的,但我不想在控制台中的错误,我想知道/预计它是空的,所以我可以添加到它。
如果我这样做
console.log(myObj.fruits.apples.color);
我会得到红色,因此,如果我这样做是为了橙色
console.log(myObj.fruits.orange.color);
它会说不确定的,至少如果我试图
console.log(myObj.fruits.apples.weight);
这应该是未定义的,我的jsfiddle没有这么热,我现在无法再现那个未定义的console.log消息
好吧,所以似乎提供的对象存在,你可以测试一个未定义的属性,如上面的重量示例。
我不是在寻找那个,我正在测试像“椰子”这样的对象是否不存在,所以我可以使用extend将它添加到对象数组中。但我不想红控制台日志错误,我希望能够使用类似的比较来预测它:
if (myObj.fruits.coconut === "undefined") {
// means it doesn't exist, add it
}
我用我自己的测试实现,这将产生误差,而不是未定义像上述
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof – deceze
if(myObj.fruits.coconut === void 0).....或.. .... if(typeof myObj.fruits.coconut ===“undefined”) – Kenny
你应该检查可能不存在的* first *属性,如果它应该是一个对象(这是你的情况),那么你可以如果(!myObj.fruits.coconut)myObj.fruits.coconut = {color:'brown'};' – trincot