我工作的動態結構,作爲一個基本的例子:測試動態對象是否有空字段的正確方法?
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