什么类/类型未定义,是否可以扩展/添加方法?

时间:2013-09-23 12:29:57

标签: javascript jquery class undefined extend

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

h[key].dostuff()

当散列中不存在密钥时,h [key]未定义,我收到错误消息,说我无法调用未定义的方法'dostuff'。

如果undefined是一个可扩展的类,那么无论如何都要将此方法添加到undefined中吗?

我确信这必须是一个常见的情况,所以有一种首选的方法来处理这个问题而不需要求助于解决方法,例如hh(关键)我可以操纵未定义的结果吗?

感谢。

3 个答案:

答案 0 :(得分:2)

由于undefined等同于javascript中的false,您可以将值检查和函数调用结合起来,如下所示:

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

这可确保如果h[key]有值,则会调用dostuff()

答案 1 :(得分:1)

if( h[key])
    h[key].dostuff()

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

答案 2 :(得分: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();

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