我有一个哈希'h'并且有如下代码:
h[key].dostuff()
当哈希中不存在密钥时,h[key] 未定义,我收到一条错误消息,提示我无法调用未定义的方法“dostuff”。
如果 undefined 是可扩展的类,是否有将此方法添加到 undefined ?
我确信这一定是一个常见的情况,所以有没有一种首选的方法来处理这个而不求助于变通方法,例如我可以操纵未定义的结果的 hh(key)?
谢谢。
我有一个哈希'h'并且有如下代码:
h[key].dostuff()
当哈希中不存在密钥时,h[key] 未定义,我收到一条错误消息,提示我无法调用未定义的方法“dostuff”。
如果 undefined 是可扩展的类,是否有将此方法添加到 undefined ?
我确信这一定是一个常见的情况,所以有没有一种首选的方法来处理这个而不求助于变通方法,例如我可以操纵未定义的结果的 hh(key)?
谢谢。
由于在 javascriptundefined
中等同于false
,因此可以将值检查和函数调用结合起来,如下所示:
h[key] && h[key].dostuff();
这确保了 ifh[key]
有一个值,dostuff()
被调用。
if( h[key])
h[key].dostuff()
这是一个检查“如果值存在,doStuff()”
你总是可以做这样的事情:
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();
我知道这是一个有点强制的解决方案,但它可以以某种方式模仿默认行为。