访问不存在的对象密钥时如何抛出错误?

Tri*_*daz 7 javascript object

这是一个长镜头......

在Javascript中,我正在访问我确定存在的对象属性,但是我在键的名称中输入了一个错字,所以返回undefined并创建了一个错误.

如何编写与以下内容等效的代码,但由于密钥不存在而引发错误?

var obj = {'myKey': 'myVal'},
    val = obj.myKye;
Run Code Online (Sandbox Code Playgroud)

我正在尝试找到一个解决方案,不需要我编写每次我想访问对象成员时使用的包装函数.可能吗?Javascript中是否有另一种"更严格"的技术来访问对象属性?

ta-*_*run -1

您可以使用try-catch, hasOwnProperty 并创建一个ReferenceError

var obj = {
        'myKey': 'myVal'
}, val;

try {
    if(obj.hasOwnProperty(myKye))
    {
        val = obj.myKye;
        alert(val);
    }

    else{
        var ex =  new ReferenceError()
    }
}
catch(ex) {
    alert(ex);
}
Run Code Online (Sandbox Code Playgroud)

测试链接

更新:

obj.myKye返回undefined并且不会抛出异常,因为,

这就是JS语言规范。

对于未定义的属性名称,对象返回 undefined,但未定义的变量引用会引发错误

  • OP 询问“如何从中抛出异常”,当你说“*你可以使用 catch 语句*”时,这既不正确也不能回答问题。您现在通过给出“不可能”的答案来解决这个问题,但第一个仍然是错误的。顺便说一句,你不应该再使用 ES3 参考 (2认同)