回答:
key of obj
これはJavaScriptにコンパイルされますkey in obj
。(CoffeeScriptはof
、キーを参照するとき、およびin
配列値を参照するときに使用します。val in arr
がにあるかどうかをテストval
しarr
ます。)
オブジェクトのプロトタイプを無視する場合は、jhの答えが正しいです。null
or undefined
値を持つキーを無視したい場合、ジミーの答えは正しいです。
「?」オペレーターは存在をチェックします:
if obj?
# object is not undefined or null
if obj.key?
# obj.key is not undefined or null
# call function if it exists
obj.funcKey?()
# chain existence checks, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?.grandChildKey
# chain existence checks with function, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?().grandChildKey
null
。
obj.key?
は、おそらく最も簡潔です。
obj.hasOwnProperty(name)
(継承されたプロパティを無視するため)
key of obj
値が文字列または数値の場合にエラーがスローされるため、この応答が好きです。Cannot use 'in' operator to search
。この場合、オブジェクトが未定義でなく、nullでもない場合は機能します。
own key of obj
追加でテストすることも可能です.hasOwnProperty()
。「最も可能性が高い」は、私が試したことがないからですが、この構文は理解力で機能します。