Risposte:
key of obj
Questo compila in JavaScript key in obj. (CoffeeScript utilizza ofquando si fa riferimento alle chiavi e inquando si fa riferimento a valori di array: val in arrverificherà se valè in arr.)
La risposta di thejh è corretta se si desidera ignorare il prototipo dell'oggetto. La risposta di Jimmy è corretta se vuoi ignorare le chiavi con un valore nullo undefined.
own = (prop, obj) -> Object::hasOwnProperty.call obj, prop
Il '?' l'operatore verifica l'esistenza:
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?è probabilmente la più concisa.
obj.hasOwnProperty(name)
(per ignorare le proprietà ereditate)
key of objgenererà un errore se il valore è una stringa o un numero. Cannot use 'in' operator to search. In questo caso, se l'oggetto non è indefinito e non è nullo, funzionerà.
own key of objfunziona anche per testare.hasOwnProperty(). il "più probabile" viene da me che non ho provato, ma questa sintassi funziona nelle comprensioni.