javascript - 从对象字面量调用函数

标签 javascript

从对象字面量调用函数

 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”范围内定义的,因此无法从其他函数访问。如果您确实想要这个,您可以使“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();

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

关于javascript - 从对象字面量调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20610394/

相关文章:

javascript - 在 Meteor 模板上使用 NPM 包

javascript - materializecss 1.0.0 在使用 jquery 更改 dom 后重新初始化 - 错误 : TypeError: Right-hand side of 'instanceof' is not callable

javascript - 如何在 html-webpack-plugin 中同时获得 EJS 编译和 html-loader?

javascript - 从 executeQueryAsync 中检索参数,javascript

javascript - 在谷歌地图中编辑并保存更新的多边形坐标

javascript - 有没有办法覆盖 Mapbox Geocoder 上的结果事件?

javascript - 允许将文本拖放到 html 输入字段中,而不清除以前的数据

javascript - 我可以在不更新页面的情况下更改 URL 吗?

javascript - 如何在javascript中将两个音频文件合并为一个并使其合并后播放

javascript - 具有特定父输入的加号减号按钮不起作用