2016-12-29 10 views
1

modalFuncを呼び出す関数はvalidateTextです。どうやってやるの?同じオブジェクトの他のメソッドを持つオブジェクトのメソッドを呼び出す

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でどのように 'this'が動作するかを知る必要があるようです。 –

答えて

2

あなたが名前の関数を作成することができます。しかし、で何かしようとしたが、おそらくあなたが望むことをしていないので、まだlearn about thisにする必要があります。

3

明らかなモジュールパターンを使用しようとしているようです。メソッドを効果的に提供するオブジェクトを返します。これは、あなたが以下のようにあなたの主な機能を実行する必要が動作するために(つまり最後に「)(」注意して、すぐに起動されます):

var geoAlert = function(lodash) { 

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


geoAlert.validateText('Some text'); 

私が作った他の変更はmodalFuncが必要ということです接頭辞はです。このは、validateTextと同じ返されたオブジェクトの一部として存在します。

function geoAlert(lodash) { 

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

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

が続いvalidateTextが呼び出されたかは関係ありません:

関連する問題