Odpowiedzi:
key of obj
To kompiluje się do JavaScript key in obj. (CoffeeScript używa ofprzy odwoływaniu się do kluczy i inprzy odwoływaniu się do wartości tablic: val in arrsprawdzi, czy valjest warr .)
Odpowiedź thejh jest poprawna, jeśli chcesz zignorować prototyp obiektu. Odpowiedź Jimmy'ego jest poprawna, jeśli chcesz zignorować klucze z wartością nulllub 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 objzgł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 objdziała również do dodatkowych testów.hasOwnProperty(). „najprawdopodobniej” pochodzi ode mnie, nie próbowałem, ale ta składnia działa ze zrozumieniem.