在Python中,当我尝试访问不存在的字典中的密钥时,会抛出错误:
>>> d = {'foo': 'bar'}
>>> d['baz']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'baz'
>>>
在Javascript中是否有类似的方法来实现此行为?宁愿不使用第三方库。
答案 0 :(得分:3)
这不是您想要的,但有zealit
节点模块。
这是使用ES6 Proxies。
const zealit = require('zealit')
const ref = { foo: true, bar: undefined }
ref.foo // true
ref.bar // undefined
ref.baz // undefined
const zealed = zealit(ref)
zealed.foo // true
zealed.bar // undefined
zealed.baz // throws a ReferenceError
答案 1 :(得分:0)
你可以将它包装在一个函数中:
function get(object, key) {
if (!object.hasOwnProperty(key)) {
throw new Error(`No key ${key}`)
}
return object[key]
}
const d = { foo: 'bar' }
const foo = get(d, 'foo') // ok
const error = get(d, 'bar') // throws
如果要检查整个原型链,建议的库解决方案可能会更好。