Risposte:
key of obj
Questo compila in JavaScript key in obj
. (CoffeeScript utilizza of
quando si fa riferimento alle chiavi e in
quando si fa riferimento a valori di array: val in arr
verificherà 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 null
o 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 obj
genererà 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 obj
funziona anche per testare.hasOwnProperty()
. il "più probabile" viene da me che non ho provato, ma questa sintassi funziona nelle comprensioni.