0

我有一个哈希'h'并且有如下代码:

h[key].dostuff()

当哈希中不存在密钥时,h[key] 未定义,我收到一条错误消息,提示我无法调用未定义的方法“dostuff”。

如果 undefined 是可扩展的类,是否有将此方法添加到 undefined ?

我确信这一定是一个常见的情况,所以有没有一种首选的方法来处理这个而不求助于变通方法,例如我可以操纵未定义的结果的 hh(key)?

谢谢。

4

3 回答 3

2

由于在 javascriptundefined中等同于false,因此可以将值检查和函数调用结合起来,如下所示:

h[key] && h[key].dostuff();

这确保了 ifh[key]有一个值,dostuff()被调用。

于 2013-09-23T12:34:26.803 回答
1
if( h[key])
    h[key].dostuff()

这是一个检查“如果值存在,doStuff()”

于 2013-09-23T12:32:37.973 回答
0

你总是可以做这样的事情:

h.get = function(key) {
    if(this.hasOwnProperty(key))
        return this[key];

    //here return a default object, whatever that would be
    return {doStuff: function() {
        //default doStuff function
    }};
};

h.get(key).doStuff();

我知道这是一个有点强制的解决方案,但它可以以某种方式模仿默认行为。

于 2013-09-23T13:14:50.490 回答