JavaScript學習筆記 四十六 門面

2021-06-18 04:58:02 字數 934 閱讀 1521

門面是一種簡單的模式;它僅僅是給物件提供可選的介面。它是一種很好實踐,讓你的**簡短且不會處理太多的事情。遵循這個實踐,你最終將獲得比使用帶有很多引數的超級方法(uber methods)更多的方法。有時2個或更多方法可能通常一起被呼叫。在這種情況下,額外建立乙個方法包裹重複的呼叫時有意義的。

比如,當處理瀏覽器事件時,你有下面的方法:

stoppropagation()限制事件且不讓它往上冒泡到父節點

preventdefault()不讓瀏覽器做預設的動作(比如:訪問乙個連線或者提交乙個表單)

這兩個不同的方法有不同的目的,它們應該被分開,但同時,它們經常一起被呼叫。因此為了取代在整個程式中的兩個方法的重複呼叫,你可以建立乙個門面方法呼叫這兩個方法:

var myevent = 

// ...

};

門面模式也適合瀏覽器指令碼,瀏覽器間不同的部分可以隱藏在乙個門面後面。接著前面的例子,你可以新增處理ie事件不同之處的**:

var myevent = 

if (typeof e.stoppropagation === "function")

// ie

if (typeof e.returnvalue === "boolean")

if (typeof e.cancelbubble === "boolean")

}// ...

};

門面模式對重新設計和重構也是有幫助的。當你想用乙個不同的實現替換乙個物件時,你不得不在一段時間內完成(它是乙個複雜的物件),在使用這個物件的新**被編寫的同時。你可以先開始考慮新物件的api然後在舊物件之上建立乙個遵循新api的門面。這種方法,當你開始完全替換舊物件,你只有很少的**需要修改因為最近的任何**已經使用的是新api。

JavaScript學習筆記(四)

匿名函式與閉包 匿名函式 所謂匿名函式就是沒有名字的函式,即建立乙個沒有名字的函式物件,可以將這個函式物件賦給乙個var,或者作為引數傳遞,作為函式返回值等等。var fcn function 閉包所謂閉包就是在函式中定義的函式,這個函式一般用來做返回值 即用乙個函式來生產函式 那麼返回的這個內部函...

JavaScript學習要點(四)

function hasprototypeproperty object,name 用來判斷是否是原型中的變數 先前建立的例項,修改原型後,例項能馬上得到原型方法,但重寫整個原型後,例項中的指標指向的卻還仍然是先前的原型 我們可以通過給原生物件的原型新增方法來對原生物件進行拓展 string.pro...

Javascript 學習筆記

如果在生成的html裡面有事件需要傳遞帶特殊字元的引數,處理如下 singletext 輸入 1.singletext value.escapehtml 為 將html編碼 2.singletext value.escapehtml inspect 為 3.在 jsdebugtext innerht...