【问题标题】:Call method in object with other method in same object使用同一对象中的其他方法调用对象中的方法
【发布时间】:2016-12-29 17:54:57
【问题描述】:

我需要validateText 函数来调用modalFunc。我该怎么做?

function geoAlert(lodash) {

    var me = this;

    return {
        modalFunc: function(text) {
            alert(text);
        },
        validateText: function() {
            modalFunc("hello")
        }
    }
}

当我跑步时:

geoAlert.validateText();我会得到这个错误:

ReferenceError: modalFunc is not defined

使用me.modalFunc("hello") 也不起作用。请提前帮助和感谢。

【问题讨论】:

  • 这取决于validateText 的调用方式。似乎您主要只需要了解 this 在 JS 中的工作原理。

标签: javascript object methods


【解决方案1】:

看起来您正在尝试使用具有启发性的模块模式;返回一个有效地提供方法的对象。为此,您需要按如下方式执行您的 main 函数(注意末尾的 '()' 意味着它将立即被调用):

var geoAlert = function(lodash) {

    return {
      modalFunc: function(text) {
            alert(text);
      },
      validateText: function() {
        this.modalFunc("hello")
      }
    };
}();


geoAlert.validateText('Some text');

我所做的另一个更改是 modalFunc 需要以 this 作为前缀,因为它作为与 validateText 相同的返回对象的一部分存在。

【讨论】:

    【解决方案2】:

    你可以创建一个命名函数:

    function geoAlert(lodash) {
    
        function modalFunc(text) {
          alert(text);
        }
    
        return {
            modalFunc: modalFunc,
            validateText: function() {
                modalFunc("hello")
            }
        }
    }
    

    那么validateText 的调用方式并不重要。但是您仍然应该 learn about this,因为您尝试使用 var me = this; 进行某些操作,这可能无论如何都达不到您的要求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      相关资源
      最近更新 更多