我想檢查複雜對象鏈中是否有任何對象丟失。 我已經想出了以下解決方案,有沒有更好的方式來完成相同的?如何檢查對象鏈中任何位置的「未定義」?
var lg = console.log;
var t = { a:{a1: 33, a12:{ aa1d: 444, cc:3 } }, b:00};
var isDefined = function(topObj, propertyPath) {
if (typeof topObj !== 'object') {
throw new Error('First argument must be of type \'object\'!');
}
if (typeof propertyPath === 'string') {
throw new Error('Second argument must be of type \'string\'!');
}
var props = propertyPath.split('.');
for(var i=0; i< props.length; i++) {
var prp = props[i];
lg('checking property: ' + prp);
if (typeof topObj[prp] === 'undefined') {
lg(prp + ' undefined!');
return false;
} else {
topObj = topObj[prp];
}
}
return true;
}
isDefined(t, 'a.a12.cc');
[javascript測試存在嵌套的對象鍵]的可能的重複(http://stackoverflow.com/questions/2631001/javascript-test-for-existence-of-nested-object-key) – 2012-07-27 14:32:08
@Felix問題不是重複的。重複項不考慮來自原型鏈的繼承屬性。 – 2012-07-27 14:51:34
@RobW:這是沒有要求,很容易改變。整體方法不會改變。 – 2012-07-27 15:14:58