Відповіді:
key of obj
Це компілюється в JavaScript key in obj
. (CoffeeScript використовує of
при посиланні на клавіші та in
при посиланні на значення масиву: val in arr
перевірить, чи val
немає arr
.)
відповідь thejh правильна, якщо ви хочете ігнорувати прототип об'єкта. Відповідь Джиммі правильна, якщо ви хочете ігнорувати ключі зі значенням null
або undefined
.
own = (prop, obj) -> Object::hasOwnProperty.call obj, prop
"?" оператор перевіряє наявність:
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?
це, мабуть, самий стислий.
obj.hasOwnProperty(name)
(ігнорувати успадковані властивості)
key of obj
призведе до помилки, якщо значенням є рядок або число. Cannot use 'in' operator to search
. У цьому випадку, якщо об’єкт не визначений та недійсний, він буде працювати.
own key of obj
працює і для додаткового тестування.hasOwnProperty()
. "найімовірніше" походить від мене не намагався, але цей синтаксис працює в розумінні.