js設計模式--鴨子類型

1.簡介編程

JavaScript沒有提供傳統面嚮對象語言的類式繼承
經過原型委託的形式實現對象與對象之間的繼承
沒有對抽象類和接口的支持設計模式

編程語言按數據類型可分爲靜態類型語言和動態類型語言
變量的類型要到程序運行的時候, 待變量被賦予值以後,纔會具備某種類型。
代碼數量更少, 理簡潔,專一業務邏輯
缺點:沒法保證數據的類型
在JavaScript中,咱們對一個變量賦值時,不須要考慮它的類型。動態類型語言對yojgod型的寬容爲JavaScript帶來了很大的靈活性。編程語言

2.duck typingspa

鴨子類型(duck typing)若是它走起路來像鴨子,叫起來也是鴨子,那麼它就是鴨子。
只關注對象的行爲,不關注對象自己面向接口編型 ,而不是面向實現編程,是設計模式中最重要的思想。代碼演示:設計

    var duck = {
                     duckSinging:function(){
                             console.log('呱呱呱');
                     }
                }
                alert('duck');

                var chicken = {
                     duckSinging:function(){
                             console.log('呱呱呱');
                     }
                }
                alert('chicken');

                var chior = [];

                var joinChior = function(animal){
                     if (animal && typeof animal.duckSinging === 'function') { //typeof就是判斷參數是什麼類型的實例                
                             chior.push(animal);
                             console.log('恭喜你加入合唱團');
                             console.log('當前已募集'+chior.length+'只鴨子');
                     }
                }
                joinChior(duck);
                joinChior(duck);
                joinChior(chicken);

 

3.複數形態
同一操做做用於不一樣的對象上面,能夠產生不一樣的解釋和不一樣的執行結果。
給不一樣的對象發送一樣的消息的時候, 這些對象會根據這個消息分別給出不一樣的反映。(閨蜜短信羣發)code

相關文章
相關標籤/搜索