我從ajax請求有以下JSON響應。檢查是否定義了一個對象,最佳做法。
var json = {
"response": {
"freeOfChargeProduct": {
"description": "Product",
"orderQty": 5,
"productName": "XYZ",
"qty": 6,
"details": {
"price": 55.5,
"instock": "true",
"focQuantity": 1
}
},
"orderLineId": 4788,
"totalOrderLinePrice": "741.36",
"totalOrderPrice": "1,314.92",
"totalQty": 17
};
的JSON這麼想的始終返回 「freeOfChargeProduct」 屬性。所以,如果我想要得到的「freeOfChargeProduct」的價格,那麼我必須做到以下幾點:
var getFreeOfChargeProductPrice = function() {
var r = json.response;
if (r && r.freeOfChargeProduct && r.freeOfChargeProduct.details) {
return r.freeOfChargeProduct.details.price;
}
return null;
};
沒有問題。但是檢查對象中的每個屬性都非常煩人,所以我創建了一個函數來檢查對象中的屬性是否被定義。
var getValue = function (str, context) {
var scope = context || window,
properties = str.split('.'), i;
for(i = 0; i < properties.length; i++) {
if (!scope[properties[i]]) {
return null;
}
scope = scope[properties[i]];
}
return scope;
};
var price = getValue('json.response.freeOfChargeProduct.details.price');
// Price is null if no such object exists.
現在我的問題:這是一個好或壞的方法來檢查,如果在一個對象存在的屬性?任何更好的建議/方法?
編輯:
我不wan't使用& & - 運算符。我很懶,我正在尋找一個可重用的方法來檢查是否定義了一個對象(或對象的屬性)。
:)謝謝!
我有一個[類似的問題](http://stackoverflow.com/questions/2631001/javascript-test-for-existence-of-nested-object-key)回來。您可能對某些回覆感興趣。 – user113716 2010-10-17 18:32:46
謝謝你的回答!我找到了一個答案(由肯尼貝克發佈),並給了它+1 :) – nekman 2010-10-17 18:42:27