Réponses:
key of obj
Cela compile en JavaScript key in obj
. (CoffeeScript utilise of
pour faire référence aux clés et in
pour faire référence aux valeurs de tableau: val in arr
testera s'il val
y 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 null
ou 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 obj
que 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 obj
aussi 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.