2016-12-29 124 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相同的返回對象的一部分存在。