抱歉,这个问题的标题,但是我没有找到更好的问题。



介绍

我的目标是创建一个对象,并将其关联到每个参数。很简单的!

var canIDoThis = {
    one: function(a, b, c){},
    two: function(a){},
    three: function(){}
}


我想用这种方式打电话给canIDoThis

if(canIDoThis['one'](x, y, z)) {
    // do somthing
}

if(canIDoThis['two'](w)) {
    // do somthing
}

if(canIDoThis['three']()) {
    // do somthing
}


如果我的var可以是“一个”,“两个”或“三个”,则可以使用此canIDoThis

// myVariable can be equalso to "one" or "two" or "three"
var myVarable;

if(canIDoThis[myVarable]()) {
    // do somthing
}




我的问题

我想管理所有myVarable值。
现在,如果我呼叫canIDoThis['four'](),我显然会得到Uncaught TypeError: undefined is not a function



我的问题

有没有办法防止Uncaught TypeError的默认行为并返回默认值?如果canIDoThis['four']()被解释为falseundefined

PS:我想用纯JavaScript做到这一点;)

最佳答案

在使用typeof调用属性之前,请尝试检查该属性是否为函数。

if (typeof(canIDoThis[myVarable]) === 'function') {
    canIDoThis[myVarable]();
}

09-16 17:48