2016-06-14 6 views
0

内の関数を呼び出して、私はこのような変数の外部からのイベントハンドラでFunctionToCall()を呼び出すしたいと思います:は、私は、変数</p> <pre><code>var MyFunction = (function() { //...... function FunctionToCall() { //...... }; //........ }(); </code></pre> <p>の内側に、この機能を使用してい変数

$('div').click(FunctionToCall()); 

どれでもアイディア?

+4

MyFunction.FunctionToCall()としてこのように、それを呼び出します。 – tkausl

答えて

2

おそらく返品明細がありません。
は、私はあなたがこのような何かを意図したとします

var myFunction = (function() { 
 
    var privateVar = 'Hello'; 
 
    
 
    return function innerFunction() { 
 
    return privateVar; 
 
    }; 
 
})(); 
 

 
console.log(myFunction());

もう一つの方法は、アクセスするメソッドを持つオブジェクトを返すことです:

var myThing = (function() { 
 
    var privateVar = 'Hello'; 
 

 
    return { 
 
    innerFunction1: function() { 
 
     return privateVar; 
 
    }, 
 
    doSomething: function(newString) { 
 
     privateVar = newString; 
 
    } 
 
    }; 
 
})(); 
 

 

 
myThing.doSomething("Hi!"); 
 
console.log(myThing.innerFunction1());

その後、あなたのイベントハンドラにアクセス可能にしたものをタップします。

-1

コード内の変数MyFunctionに匿名関数を宣言しています。それは未定義です。匿名関数は一般的にただちに呼び出されるため、匿名関数の中で何かを呼びたくはありません。

代わりに、外部の変数としてごFunctionToCallを宣言してから、あなたはこの

var FunctionToCall; 
(function() { 
    //...... 
    FunctionToCall = function() { 
     //......  
    }; 
    //........ 
}(); 

のようなあなたの無名ブロックの内部で、それを定義することができます。そして、あなたがFunctionToCallを呼び出すことができます。私はこれが良い慣習ではないと思うのですが、一般的に同じスコープレベルでコード内で使用する関数を保持したいと思っています。

0

静的メソッドを宣言できます。あなたが内側から外の世界にそれを利用できるようにしない限り、あなたは外からこの機能にアクセスすることはできません

var MyFunction = function() { 
 
}; 
 

 
MyFunction.FunctionToCall = function() { 
 
    console.log('MyFunction.FunctionToCall called'); 
 
}; 
 

 
$(function() { 
 
    $('div').click(function() { 
 
     MyFunction.FunctionToCall() 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script> 
 

 
<div>Click me</div>

関連する問題

 関連する問題