Réponses:
key of obj
Cela compile en JavaScript key in obj. (CoffeeScript utilise ofpour faire référence aux clés et inpour faire référence aux valeurs de tableau: val in arrtestera s'il valy en a arr.)
La réponse de thejh est correcte si vous voulez ignorer le prototype de l'objet. La réponse de Jimmy est correcte si vous voulez ignorer les clés avec une valeur nullou undefined.
own = (prop, obj) -> Object::hasOwnProperty.call obj, prop
Le '?' l'opérateur vérifie l'existence:
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?c'est probablement la plus concise.
obj.hasOwnProperty(name)
(pour ignorer les propriétés héritées)
key of objque jettera une erreur si la valeur est une chaîne ou un nombre. Cannot use 'in' operator to search. Dans ce cas, si l'objet n'est ni indéfini ni nul, il fonctionnera.
own key of objaussi pour un test supplémentaire.hasOwnProperty(). le «plus probable» vient du fait que je n'ai pas essayé, mais cette syntaxe fonctionne dans les compréhensions.