1

「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();
4

2 に答える 2

3

いいえ、または同等のものを除いevalて、ドット表記メンバー演算子では不可能です。

一貫した構文を維持したい場合は、常にメンバー演算子の角括弧表記を使用してください。

  callMethod : function(methodtocall){
       this[methodtocall]()
  },
  init : function(){
      this["callMethod"]("method1");
  }
于 2012-06-20T23:42:48.333 に答える
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();
于 2012-06-20T23:45:57.193 に答える