2011-07-01 58 views
1

我知道dojo有這個功能,但如何jQuery或任何其他庫?jQuery如果檢查長對象

$.ifObject(foo.bar.baz.qux[0]) 

if (foo && foo.bar && foo.bar.baz && foo.bar.baz.qux[0]) 

假設對象嵌套任意大小,我正在尋找一個糖功能,將檢查我找對象是否被定義,沿途沒有導致服務器崩潰。

+3

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

回答

1

如果你想潛入咖啡腳本,它在?運營商一大特點。

if foo?.bar?.baz?.qux?[0] 
    alert 'yay!' 

哪個編譯爲這個討厭的,但非常有效,JavaScript的

var _ref, _ref2, _ref3; 
if (typeof foo !== "undefined" && foo !== null ? (_ref = foo.bar) != null ? (_ref2 = _ref.baz) != null ? (_ref3 = _ref2.qux) != null ? _ref3[0] : void 0 : void 0 : void 0 : void 0) { 
    alert('yay!'); 
} 
+0

這很酷,爲咖啡標記+1,看起來更吸引人的一天 – Harry

1

這樣做會在一個try-catch塊圍住變量引用的最簡單方法:

try { 
    var val = foo.bar.baz.qux[0]; 
    // succeeded: use val 
} catch (ex) { 
    // failed: do something else 
}