我使用的內部變量呼叫可變
var MyFunction = (function() {
//......
function FunctionToCall() {
//......
};
//........
}();
這個函數中的功能,我想從外面變量調用FunctionToCall()
與事件處理程序是這樣的:
$('div').click(FunctionToCall());
任何理念?
我使用的內部變量呼叫可變
var MyFunction = (function() {
//......
function FunctionToCall() {
//......
};
//........
}();
這個函數中的功能,我想從外面變量調用FunctionToCall()
與事件處理程序是這樣的:
$('div').click(FunctionToCall());
任何理念?
您可能錯過了一個return語句。
我想你打算是這樣的:
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());
之後,你可以在調整您的事件處理程序可訪問的任何內容。
您正在代碼中聲明變量MyFunction
的匿名函數。這將是未定義的。你不想在匿名函數中調用任何東西,因爲通常會立即調用匿名函數。
相反,聲明你FunctionToCall作爲外部變量,然後你可以把它定義您的匿名塊內像這樣
var FunctionToCall;
(function() {
//......
FunctionToCall = function() {
//......
};
//........
}();
然後你就可以調用FunctionToCall。雖然我不認爲這是好習慣,但通常情況下,您希望在整個代碼中使用更高級別的函數。
你可以聲明一個靜態方法。因此,稱其爲MyFunction.FunctionToCall()
:
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>
,除非你將其提供給從裏面外面世界的你不能從外部訪問該功能。 – tkausl