[英]How do you access a function inside an anonymous function from outside
我正在為網頁編寫一些有用的功能。 這些函數將在匿名函數內部,並且將從函數外部調用。 當我嘗試調用函數時,出現錯誤。 這就是我構造的方式:
(function(){
var fx ={
pop : function(msg){
alert(msg);
}
};
fx = window.fx;
})();
window.onload = fx.pop('hi');
有人知道我該怎么做嗎? 我知道這是可能的,因為jQuery和其他javascript庫是這樣寫的。
當你做fx = window.fx;
您將覆蓋匿名函數本地范圍內的fx
。 如果要在全局范圍之外訪問它,則需要執行window.fx = fx;
。 而且好像您要在加載時調用pop
函數,而不是在加載時調用函數,這就是您要在此處執行的操作window.onload = fx.pop('hi');
這將立即調用pop
並將方法的結果設置為load
事件的回調(未定義,因為您的方法不返回任何內容;除非該方法返回另一個需要在加載后調用的函數,否則此函數將變得無用)。 相反,您可能想嘗試這種方式。
window.onload = fx.pop.bind(this, 'hi'); //Now this will get invoked only after load event is completed, it bind the current context to the function pop with the argument `hi`
要么
window.onload = function(){
fx.pop('hi'); //Now this gets invoked only after load event is completed
};
因此,您可以嘗試:
(function(){
var fx ={
pop : function(msg){
alert(msg);
}
};
window.fx = fx;
})();
window.onload = function(){
fx.pop('hi')
};
您確定 jquery和其他javascript庫是這樣寫的嗎? 我不知道一種從函數外部訪問函數范圍的簡單方法。 這似乎是一個不尋常的目標,所以請解釋一下您嘗試使用此技術解決的問題,也許有更合適的策略。
例如,您可以嘗試:
var fx;
(function(){
fx ={
pop : function(msg){
alert(msg);
}
};
fx = window.fx; // this will probably overwrite your previous object with undefined
})();
window.onload = fx.pop('hi');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.