Ответы:
key of obj
Это компилируется в JavaScript key in obj. (CoffeeScript использует ofпри обращении к ключам и inпри обращении к значениям массива: val in arrпроверяет, valесть ли вход arr.)
Ответ thejh правильный, если вы хотите игнорировать прототип объекта. Ответ Джимми правильный, если вы хотите игнорировать ключи со значением nullили undefined.
own = (prop, obj) -> Object::hasOwnProperty.call obj, prop
'?' оператор проверяет наличие:
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. В этом случае, если объект не является неопределенным и не нулевым, он будет работать.
own key of objтоже работает, чтобы дополнительно протестировать.hasOwnProperty(). «скорее всего» исходит от того, что я не пробовал, но этот синтаксис работает в пониманиях.