[英]Javascript. Get reference on outer object from immediate call function
[英]Javascript immediate function call from external function
我試圖在html文件下定義的按鈕單擊時調用test1.js中定義的立即函數。 它總是拋出錯誤“測試未定義”。 我有點意識到,作為立即函數,它會立即調用,因此會返回“未定義錯誤”。 但是,單擊按鈕有什么方法可以調用立即函數(訪問方法,屬性等)?
先感謝您。
//test1.js var test = (function(){ alert(window); var tmp = 'hello'; }());
<!DOCTYPE html> <html> <head> </head> <body> <script type="text/javascript" src="test1.js"></script> <input type="button" id="btn1" value="ClickMe!" /> <script type="text/javascript"> var btn = document.getElementById("btn1"); btn.addEventListener("click",fun1,false); function fun1(){ alert(test.tmp); } </script> </body> </html>
您必須修改代碼,以便IIFE返回帶有tmp
屬性的對象。 如
var test = (function(){
alert(window);
var tmp = 'hello';
return {tmp:tmp};
}());
在運行IIFE之后,您需要顯式返回一個對象,該對象包含想要使之可用的任何數據。 (只需像我在下面的代碼段中那樣添加收益)。
//test1.js var test = (function(){ alert(window); // you need to return any values you want accessible return { tmp: "hello" } }());
<!DOCTYPE html> <html> <head> </head> <body> <script type="text/javascript" src="test1.js"></script> <input type="button" id="btn1" value="ClickMe!" /> <script type="text/javascript"> var btn = document.getElementById("btn1"); btn.addEventListener("click",fun1,false); function fun1(){ alert(test.tmp); } </script> </body> </html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.