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

What class/type is undefined, and is it possible to extend / add a method to it?

本文关键字:可以向 扩展 添加 方法 是否 类型 未定义 什么      更新时间:2023-09-26

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

h[key].dostuff()

当哈希中不存在键时,h[key] 是未定义的,我收到一个错误,说我无法调用未定义的方法"dostuff"。

如果undefined

是一个可扩展的类,是否有办法将此方法添加到undefined?

我确定这一定是一种常见情况,那么是否有一种首选的方法来处理此问题,而无需诉诸解决方法功能,例如 hh(key(,我可以在其中操纵未定义的结果?

谢谢。

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

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

这可确保如果h[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();

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