从Object Literal调用函数

Calling a function from an Object Literal

本文关键字:函数 调用 Literal Object      更新时间:2023-09-26

从Object Literal 调用函数

 var runApp = {
    init: function(){  
       this.validate();
    },
    run: function() {
       var myStr = "My Name";
       var abc = function()
       {
         return myStr;
       }
    },
    validate: function() {
      var val = this.run().abc(); // It Gives "Uncaught TypeError: Cannot call method 'abc' of undefined "
      alert(val);
    }
 };
 runApp.init();

如何在函数validate中调用函数abc()

函数abc是在"run"on的范围内定义的,因此无法从其他函数访问。如果你真的想要这个,你可以让"abc"在"this"范围内可用。

var runApp = {
    init: function(){
            this.validate();
    },
    run: function() {
            var myStr = "My Name";
            this.abc = function() {
                    return myStr;
            }
    },
    validate: function() {
        this.run(); // run this one first so function abc exists
            var val = this.abc(); 
            alert(val);
    }
}
runApp.init();

简而言之:如果不修改代码本身,就无法做到这一点。

您可以从对象内的run函数返回abc函数:

run: function() {
   var myStr = "My Name";
   var abc = function() {
      return myStr;
   }
   return { abc : abc };
}

然后CCD_ 4将工作。

由于run方法不返回包含abc函数的对象,因此无法调用它。它返回undefined。

一个解决方案是,如果返回一个具有名为abc的方法的对象。