访问属性但在对象中不存在时抛出错误

时间:2016-05-26 14:11:58

标签: javascript

在Python中,当我尝试访问不存在的字典中的密钥时,会抛出错误:

>>> d = {'foo': 'bar'}
>>> d['baz']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'baz'
>>>

在Javascript中是否有类似的方法来实现此行为?宁愿不使用第三方库。

2 个答案:

答案 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

如果要检查整个原型链,建议的库解决方案可能会更好。