2013-07-01 20 views
0

我需要用對象做某件事。不幸的是我用(Titanium)做的這個系統期望值是非空的,否則它會出現段錯誤。然而,輸入不能保證提供理智的對象。這裏有一個例子:深入測試hasOwnProperty(或諸如此類)對象的簡潔方法是什麼?

var data = { 
    foo: { 
    bar: "foobar" 
    } 
}; 
function do_it(data) { 
    do_something_with_non_null_value(data.foo.bar); 
} 

然而,它是完全可能的,data是下列任何一種:

var data = null; 
var data = { 
    foo: null 
}; 
var data = { 
    foo: { 
    bar: null 
    } 
}; 

如何測試在深,但簡潔的莊園一個非空值,以防止do_something_with_non_null_value()從崩潰?

Underscore.js的答案也歡迎。

+0

http://stackoverflow.com/questions/4676223/check-if-object -member-exists-in-nested-object – goat

回答

1

如何從下劃線中使用defaults方法?

function do_it(data) { 

    var defaults = { 
    foo: { 
     bar: null 
    } 
    }; 

    data = _.defaults(data || {}, defaults); 

    do_something_with_non_null_value(data.foo.bar); 
} 

如果數據是任何這樣的:

var data = null; 
var data = { 
    foo: null 
}; 

將對象更改爲:

var data = { 
    foo: { 
    bar: null 
    } 
}; 
+0

當數據超過3級時,這不會有幫助。它確實符合有關問題的法案。做得好。 – Sukima

相關問題