使用“点语法”可以不使用“eval”(邪恶)吗? (我知道我可以用this[methodtocall]()
)
var myObj = {
method1 : function(){
return 1;
},
method2 : function(){
return 1;
},
callMethod : function(methodtocall){
this.+methodtocall+()
},
init : function(){
this.callMethod("method1");
}
}
myObj.init();
答案 0 :(得分:3)
不,除了eval
或等价物之外,使用点符号成员运算符是不可能的。
如果要保持一致的语法,请始终使用成员运算符的方括号表示法。
callMethod : function(methodtocall){
this[methodtocall]()
},
init : function(){
this["callMethod"]("method1");
}
答案 1 :(得分:0)
尝试这样做:
var myObj = {
method1 : function(){ return 1; },
method2 : function(){ return 2; },
callMethod : function(methodtocall){
if(typeof methodtocall=== 'function') {
methodtocall();
}
},
init : function(){ this.callMethod(this.method1); }
}
myObj.init();