Odpowiedzi:
key of obj
To kompiluje się do JavaScript key in obj
. (CoffeeScript używa of
przy odwoływaniu się do kluczy i in
przy odwoływaniu się do wartości tablic: val in arr
sprawdzi, czy val
jest warr
.)
Odpowiedź thejh jest poprawna, jeśli chcesz zignorować prototyp obiektu. Odpowiedź Jimmy'ego jest poprawna, jeśli chcesz zignorować klucze z wartością null
lub undefined
.
own = (prop, obj) -> Object::hasOwnProperty.call obj, prop
„?” operator sprawdza istnienie:
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?
jest prawdopodobnie najbardziej zwięzły.
obj.hasOwnProperty(name)
(aby zignorować dziedziczone właściwości)
key of obj
zgłosi błąd, jeśli wartość jest ciągiem lub liczbą. Cannot use 'in' operator to search
. W takim przypadku, jeśli obiekt nie jest niezdefiniowany i nie jest pusty, zadziała.
own key of obj
działa również do dodatkowych testów.hasOwnProperty()
. „najprawdopodobniej” pochodzi ode mnie, nie próbowałem, ale ta składnia działa ze zrozumieniem.