抱歉,这个问题的标题,但是我没有找到更好的问题。
介绍
我的目标是创建一个对象,并将其关联到每个参数。很简单的!
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']()
被解释为false
或undefined
PS:我想用纯JavaScript做到这一点;)
最佳答案
在使用typeof
调用属性之前,请尝试检查该属性是否为函数。
if (typeof(canIDoThis[myVarable]) === 'function') {
canIDoThis[myVarable]();
}