Javascript 测试方法的存在性

Javascript 测试方法的存在性,javascript,Javascript,我正在尝试使一些现有的JS向后兼容。如果方法不存在,我需要重写它,否则只返回现有的方法 以下是我目前掌握的代码: this.grid.getDataSource = function(){ if (getDataSource == undefined) return getStore(); else return getDataSource(); } 但是,它会在“if”行上不断返回错误: getDataSource未定义 进行此操作的最佳方式是

我正在尝试使一些现有的JS向后兼容。如果方法不存在,我需要重写它,否则只返回现有的方法

以下是我目前掌握的代码:

this.grid.getDataSource = function(){
    if (getDataSource == undefined)
        return getStore();
    else
        return getDataSource();
}
但是,它会在“if”行上不断返回错误:

getDataSource未定义


进行此操作的最佳方式是什么?

这应该可以正常工作,而不会引发错误

if (typeof getDataSource != "function")

您可能需要将其包装在typeof()函数中


this.grid.getDataSource=getDataSource | | getStore

这是一个很好的资源,应该可以回答你的问题。这是一个非常简单的函数


仅供参考,typeof不是一个函数-它是一个运算符。你不需要父母(见)。我了解到这里的困难之处,所以:-)它可能是一个运算符,但我经常使用括号只是为了让它更可读,特别是如果您正在执行“typeof(asd.getName)”或其他操作,如果没有声明getDataSource,这仍然会抛出错误。OMG,这是什么?使用自定义函数进行简单比较不是很有效……我更喜欢测试
(typeof getDataSource==“function”)
,因为测试它是否
未定义(参见else子句)并不能揭示它实际上代表一个函数;变量也可以引用字符串或其他原语。@Marcel当然,你是对的。删除第二个变体。啊,我刚刚看到你。;)
this.grid.getDataSource = function(){
if (typeof getDataSource == undefined)
    return getStore();
    else return getDataSource();
}