Respuestas:
key of obj
Esto se compila a JavaScript key in obj. (CoffeeScript usa ofcuando se refiere a claves, y incuando se refiere a valores de matriz: val in arrprobará si valestá dentro arr)
La respuesta de thejh es correcta si desea ignorar el prototipo del objeto. La respuesta de Jimmy es correcta si desea ignorar las claves con un valor nullo undefined.
own = (prop, obj) -> Object::hasOwnProperty.call obj, prop
Los '?' el operador comprueba la existencia:
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?probablemente sea la más concisa.
obj.hasOwnProperty(name)
(ignorar propiedades heredadas) a.
key of objarrojará un error si el valor es una cadena o un número. Cannot use 'in' operator to search. En este caso, si el objeto no está indefinido y no es nulo, funcionará.
own key of objfuncione para probar adicionalmente.hasOwnProperty(). lo “más probable” viene de que yo no lo haya intentado, pero esta sintaxis funciona en comprensiones.