2011-07-01 10 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-にコンパイル

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

オブジェクト – user113716

答えて

1

を、それが?オペレータでの大きな特徴があります。この、厄介な、まだ非常に効率的な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つはcoffeescriptのために、より魅力的な日に見える – Harry

1

これを実行する最も簡単な方法はtry-catchブロック内の変数の参照囲むために、次のようになります。あなたはコーヒースクリプトに飛び込むしたい場合

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