我有一个哈希'h'并且代码如下:
h[key].dostuff()
当散列中不存在密钥时,h [key]未定义,我收到错误消息,说我无法调用未定义的方法'dostuff'。
如果undefined是一个可扩展的类,那么无论如何都要将此方法添加到undefined中吗?
我确信这必须是一个常见的情况,所以有一种首选的方法来处理这个问题而不需要求助于解决方法,例如hh(关键)我可以操纵未定义的结果吗?
感谢。
答案 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();
我知道这是一个有点强迫的解决方案,但它可以某种方式模仿默认行为。