2016-12-29 126 views
1

我需要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

这取决于如何调用validateText。看起来像你主要只是需要了解这个''在JS中如何工作。 – 2016-12-29 17:56:08

回答

2

您可以创建一个名为功能:

function geoAlert(lodash) { 

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

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

那么不要紧validateText是如何被调用。但你仍然应该learn about this,因为你试图用var me = this;这可能不会做你想要的东西。

3

它看起来像你试图使用揭示模块模式;返回有效提供方法的对象。对于这个工作,你需要按如下方式执行你的主要功能(末尾注意“()”,也就是说它会立即调用):

var geoAlert = function(lodash) { 

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


geoAlert.validateText('Some text'); 

我做了另一个变化是,modalFunc需要这个作为与validateText相同的返回对象的一部分存在。