《JavaScript设计模式》——2.5 多种调用方式——多态
JavaScript设计模式 方式 调用 多种 2.5 多态
2023-09-11 14:17:38 时间
本节书摘来自异步社区《JavaScript设计模式》一书中的第2章,第2.5节,作者:张容铭著,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.5 多种调用方式——多态“小铭,在面向对象编程中不是还有一种特性叫作多态么?在JavaScript中可以实现么?”
“多态,就是同一个方法多种调用方式吧。在JavaScript中也是可以实现的,只不过要对传入的参数做判断以实现多种调用方式,如我们定义一个add方法,如果不传参数则返回10,如果传一个参数则返回10+参数,如果传两个参数则返回两个参数相加的结果。”
//多态 function add(){ // 获取参数 var arg = arguments, // 获取参数长度 len = arg.length; switch(len){ // 如果没有参数 case 0: return 10; // 如果只有一个参数 case 1: return 10 + arg[0]; // 如果有两个参数 case 2: return arg[0] + arg[1]; // 测试用例 console.log(add()); // 10 console.log(add(5)); // 15 console.log(add(6,7)); // 13
“当然我们还可以让其转化成更易懂的类形式:”
function Add(){ // 无参数算法 function zero(){ return 10; // 一个参数算法 function one(num){ return 10 + num; // 两个参数算法 function two(num1, num2){ return num1 + num2; // 相加共有方法 this.add = function(){ var arg = arguments, // 获取参数长度 len = arg.length; switch(len){ // 如果没有参数 case 0: return zero(); // 如果只有一个参数 case 1: return one(arg[0]); // 如果有两个参数 case 2: return two(arg[0], arg[1]); // 实例化类 var A = new Add(); console.log(A.add()); // 10 console.log(A.add(5)); // 15 console.log(A.add(6,7)); // 13
“对于多态类,当我们调用add运算方法时,他会根据传参不同做相应运算,当然我们将不同运算方法封装在类内,这样代码更易懂。”
- 在JS中不会检查参数的类型,所以这就意味着任何数据都可以作为参数传递 - 要调用某个函数,无需指定的类型,只要对象满足某些条件即可 - 如果一个东西走路像鸭子,叫起来像鸭子,那么它就是鸭子 - 多态为我们提供了灵活性 ```html script class Person{ constructor(name){ this.name = name
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- JavaScript图形实例:曲线方程
- [ Javascript ] JavaScript中的定时器(Timer) 是怎样工作的!
- ExtJS学习-----------Ext.Object,ExtJS对javascript中的Object的扩展
- javascript实现java的map对象,js实现new map()
- JavaScript - 获取高度
- 【JavaScript】重温Javascript继承机制
- javascript事件设计模式
- 《JavaScript设计模式》——9.3 Revealing Module(揭示模块)模式
- 《JavaScript设计模式》——9.9 Facade(外观)模式
- 《众妙之门——JavaScript与jQuery技术精粹》——导读
- 《JavaScript设计模式》——1.3 用对象收编变量
- 《JavaScript设计模式》——第10章 水管弯弯——适配器模式 10.1引入jQuery
- 《JavaScript启示录》——1.13 如何存储或复制复杂值
- Chrome 开发大全之 02 在控制台中运行 JavaScript
- 每个 JavaScript 开发人员都应该知道的一件事
- JavaScript设计模式es6(23种)
- 华为OD机试 - 网上商城优惠活动(一)(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 【JavaScript从入门到精通】第四课初探JavaScript魅力-04
- 【javascript】Javascript中"||"的妙用
- 深入理解JavaScript系列(33):设计模式之策略模式
- Javascript 中的 CJS, AMD, UMD 和 ESM是什么