javascript
javascript封装与多态的体现
封裝是實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)的第一步,封裝就是將數(shù)據(jù)與函數(shù)等集合在一個(gè)個(gè)的單元中(我們稱之為類)。被封裝的對(duì)象通常被稱為抽象數(shù)據(jù)類型。
在傳統(tǒng)的面向?qū)ο笳Z言中有訪問修飾符,如Private:只有類本身能存取.Protected:類和派生類可以存取.Public:完全存取.
那么在沒有這些訪問修飾符的javascript中是怎么實(shí)現(xiàn)封裝的呢,請(qǐng)看如下代碼:
以上是通過匿名函數(shù)立即執(zhí)行來實(shí)現(xiàn)的,myObject返回一個(gè)對(duì)象中包含getName方法,在getName函數(shù)聲明的作用域中可以訪問到私有屬性__name,而myObject外部環(huán)境卻無法直接訪問__name。
多態(tài):同一操作作用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。
先看一段普通的javascript代碼如何渲染地圖。
如上寫法,假如我們需要增加高德地圖,還要修改renderMap函數(shù),往里面堆砌if條件分支語句. 十分不利于代碼的復(fù)用。
可以借助面向?qū)ο蠖鄳B(tài)的思想,把程序相同部分抽離出來,升級(jí)寫法如下:
var renderMap = function (map) {if(map.show instanceof Function){map.show();} }; renderMap(googleMap); renderMap(baiduMap);#現(xiàn)在增加一個(gè)高德地圖 var gaodeMap = {show: function () {console.log('Render Gaode Map');} }; renderMap(gaodeMap);
當(dāng)然以上寫法只是體現(xiàn)多態(tài)的思想,并不是說每個(gè)地圖的渲染方法都是show。
轉(zhuǎn)載于:https://www.cnblogs.com/peakleo/p/6213944.html
總結(jié)
以上是生活随笔為你收集整理的javascript封装与多态的体现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金风险有哪些 注意这几个就可以
- 下一篇: 20145221 《信息安全系统设计基础