【发布时间】:2012-01-04 19:00:26
【问题描述】:
在 CoffeeScript 中,检查对象中是否存在键的最简单方法是什么?
【问题讨论】:
在 CoffeeScript 中,检查对象中是否存在键的最简单方法是什么?
【问题讨论】:
obj.hasOwnProperty(name)
(忽略继承的属性)
【讨论】:
key of obj 会抛出错误。 Cannot use 'in' operator to search。在这种情况下,如果对象不是 undefined 且不是 null,它将起作用。
key of obj
这编译为 JavaScript 的 key in obj。 (CoffeeScript 引用键时使用of,引用数组值时使用in:val in arr 将测试val 是否在arr 中。)
如果您想忽略对象的原型,thejh 的答案是正确的。如果您想忽略具有null 或undefined 值的键,Jimmy 的回答是正确的。
【讨论】:
own key of obj 也可以用于额外测试.hasOwnProperty()。 “最有可能”来自我没有尝试过,但这种语法在理解中起作用。
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? 可能是最简洁的。