標籤:
很多JS外掛程式的代碼開頭都是 (function( 一直不太明白 直到看到
// 事件綁定 this.bindHandler = (function() { if (window.addEventListener) {// 標準瀏覽器 return function(elem, type, handler) {// elem:節點 type:事件類型 handler:事件處理常式 // 最後一個參數為true:在捕獲階段呼叫事件處理常式 為false:在冒泡階段呼叫事件處理常式 elem.addEventListener(type, handler, false); } } else if (window.attachEvent) {// IE瀏覽器 return function(elem, type, handler) { elem.attachEvent("on" + type, handler); } }})(); // 事件解除this.removeHandler = (function() { if (window.removeEventListerner) {// 標準瀏覽器 return function(elem, type, handler) { elem.removeEventListerner(type, handler, false); } } else if (window.detachEvent) {// IE瀏覽器 return function(elem, type, handler) { elem.detachEvent("on" + type, handler); } }})();
化簡成
a = (function(){ return function(b){ alert(b); } })(); a(‘$b$‘);
一眼就看明白了 : 調用 function的傳回值 也就是閉包函數
javascript 方法 / 綁定 解除綁定事件