用同一对象中的其他方法调用对象中的方法

时间:2016-12-29 17:54:58

标签: javascript object methods

我需要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")也不起作用。请提前帮助和谢谢。

2 个答案:

答案 0 :(得分:3)

看起来你正试图使用​​一种揭示模块模式;返回一个有效提供方法的对象。为此,您需要按如下方式执行主要功能(注意结尾处的'()'意味着它将立即被调用):

var geoAlert = function(lodash) {

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


geoAlert.validateText('Some text');

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

答案 1 :(得分:2)

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

function geoAlert(lodash) {

    function modalFunc(text) {
      alert(text);
    }

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

然后调用validateText的方式并不重要。但是你仍然应该learn about this,因为你尝试了var me = this;的某些内容,而这可能无法做到你想做的事情。