Respuestas:
key of obj
Esto se compila a JavaScript key in obj
. (CoffeeScript usa of
cuando se refiere a claves, y in
cuando se refiere a valores de matriz: val in arr
probará si val
está 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 null
o 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 obj
arrojará 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 obj
funcione para probar adicionalmente.hasOwnProperty()
. lo “más probable” viene de que yo no lo haya intentado, pero esta sintaxis funciona en comprensiones.