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