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

假设我们要编写一个地图应用,现在有两家可选的地图 API 提供商。

const googleMap = {  show: function () { console.log('谷歌地图');  }
};
const baiduMap = { show: function () { console.log('百度地图');  }
};
const renderMap = function (type) {    if (type === 'google') {   googleMap.show();   } else if (type === 'baidu') { baiduMap.show();    }
};
renderMap('google'); // 输出:谷歌地图
renderMap('baidu'); // 输出:百度地图

同一个方法renderMap,根据传入的参数不同,作出了各自不同的反应。调用各家地图的show方法。(同一个接口可以不同实现)

多态背后思想是将“做什么”和“谁去做以及怎样去做”分离开来,也就是将“不变的事物”与 “可能改变的事物”分离开来。

下面是改写后的代码,首先我们把不变的部分隔离出来,地图都会有show方法的API。

const googleMap = {  show: function () { console.log('谷歌地图');  }
};
const baiduMap = { show: function () { console.log('百度地图');  }
};  const renderMap = function (map) { if (map.show instanceof Function) { map.show(); }
};
renderMap(googleMap); // 输出:谷歌地图
renderMap(baiduMap); // 输出:百度地图

方法 renderMap 根据传入的地图对象进行调用显示。这就是对象的多态性。

理解JavaScript中的多态相关推荐

  1. 帮助你更好理解javascript中easing功能的网站 - Easings.net

    日期:2012-10-17  来源:GBin1.com 如果你开发过jQuery的动画效果的话,肯定接触过一个jQuery插件:jquery.easing plugin,这个插件可以帮助你生成不同类型 ...

  2. 理解javascript中的回调函数(callback)【转】

    在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...

  3. php event loop,理解javascript中的事件循环(Event Loop)

    背景 在研究js的异步的实现方式的时候,发现了JavaScript 中的 macrotask 和 microtask 的概念.在查阅了一番资料之后,对其中的执行机制有所了解,下面整理出来,希望可以帮助 ...

  4. 理解JavaScript中的原型继承(2)

    两年前在我学习JavaScript的时候我就写过两篇关于原型继承的博客: 理解JavaScript中原型继承 JavaScript中的原型继承 这两篇博客讲的都是原型的使用,其中一篇还有我学习时的错误 ...

  5. javascript 符号_理解JavaScript中“ =”符号的直观指南

    javascript 符号 by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) 理解JavaScript中" ="符号的直观指南 (A Visu ...

  6. 深入理解JavaScript中的属性和特性

    深入理解JavaScript中的属性和特性 JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaSc ...

  7. 理解JavaScript中的原型与原型链

    理解JavaScript中的原型与原型链 原型链是一种机制,指的是JavaScript中每个内置的对象都有一个内置的__proto__属性指向创建它的构造函数的prototype(原型)属性.原型链的 ...

  8. 理解javascript中的回调函数(callback)

    理解javascript中的回调函数(callback) 在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Obje ...

  9. 理解JavaScript中部分设计模式

    理解JavaScript中部分设计模式 什么是设计模式 在软件工程中,设计模式是软件设计中常见问题可重用的方案.设计模式代表着经验丰富的软件开发人员使用的最佳实践.设计模式可以被认为是编程模板. 为什 ...

最新文章

  1. order by总结
  2. 摘自《解析极限编程-拥抱变化》
  3. NSDictionary NSArray 转中文输出
  4. Android加密通信防抓包,[原创]基于Taintdroid思想的android ssl\tsl保密通信抓包研究(未成功,分享一下思路)...
  5. Python学习日记之中文支持
  6. c#中的socket(tcp)
  7. 7-96 福到了 (15 分)
  8. 数据库每日一题 2020.05.09
  9. C语言与汇编语言的区别
  10. Spring的IoC解析
  11. apache服务器性能不行,Apache服务器性能调优
  12. js 加密url java_js 对 URL 参数进行 加密 解密
  13. LaTex建立参考文献链接
  14. thinkphp5.0.6 连接SQLServer2008r2 配置总结
  15. [转]Understanding Integration Services Package Configurations
  16. eclipse中的英文与汉语对照表
  17. 使用github搭建网站
  18. List集合在遍历时删除数据的问题
  19. 普罗米修斯Prometheus手记
  20. 融云 php sdk下载,Android 即时语音聊天工具 开发

热门文章

  1. 别再问如何用 Python 提取 PDF 内容了!
  2. 阿里成立智能搜索业务部;任天堂:共有30万账号被黑客入侵;TiDB 3.1.2 发布| 极客头条...
  3. 大陆集团ADAS招聘丨老司机带你现场体验自动驾驶的快感
  4. 顶尖技术专家严选,15场前沿论坛思辨,2019中国大数据技术大会邀您共赴!
  5. 这本Python算法书有点火~
  6. 代码有温度 科技需向善
  7. 小米开源语音模型 Kaldi-ONNX 转换工具,助力移动端部署!
  8. 漫画:如何给女朋友解释什么是策略模式?
  9. 高度焦虑、凌晨出没、空中飞人,这些竟是 IT 大佬的日常!
  10. 程序员必备技能之 Git 的体系结构与历史