Відповіді:
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(). "найімовірніше" походить від мене не намагався, але цей синтаксис працює в розумінні.