JavaScript 多态

日期: 2017-07-17         浏览量: 2641

多态的含义:同一操作作用不同的对象上面,可以产生不同的解释和不同的结果。

 

例:假设我们要写一个地图应用,现在可能有两家供应商提供我们接入自己的应用(百度,谷歌). 两家供应商的api中提供show方法,负责展示地图。

代码如下:

var googleMap = {

    show : function(){

        console.log('开始渲染谷歌地图')

    }

}


var baiduMap = {

    show : function(){

        console.log('开始渲染百度地图')

    }


var renderMap = function( map ){

    if(map.show instanceof Function){

        map.show();

    }

}


renderMap(googleMap);        //输出:   开始渲染谷歌地图

renderMap(baiduMap);          //输出:   开始渲染百度地图


从上面代码我们可以看出,多态的背后思想实际上是把“做什么”和“谁去做以及怎么去做”分离开来,也就是将“不变的事物”与“可变的事物分离开发”。要实现这一点,归根结底先要消除类型之间的耦合关系(例如:静态类语言 java)。而javascript的变量类型在运行期是可变的。这意味着javaScript对象的多态特性是与生俱来的。(在java中,可以通过向上转型实现多态)