安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

JS中没有函数重载,又是如何实现函数重载的呢?

3月27日 终不悔投稿
  打工仔的周末,不妨来点前端知识!
  面试官问你JS是如何实现函数重载的?你会怎么回答?
  你会不会疑问我在书里看的明确讲JS是没有函数重载的,面试官说能实现,那肯定是有办法的呀,该如何实现呢?一、什么是函数重载?
  重载函数指的是两个或两个以上的同名函数,实现一个函数名有多种功能。
  函数重载要求编译器能够在调用函数时唯一确定,应该调用的是哪个函数?由于同名函数有多个,在确定函数实现时,需要根据函数的参数的个数和类型来区分,即实现函数重载时,要求同名函数的参数个数或类型不一致,否则将无法实现函数重载。
  重载的特点:同名的多个函数。不同的参数。二、JS中有函数重载吗?
  我在阅读《JavaScript高级程序设计(第三版)》一书,在第五章看到明确的提示JS没有函数重载。
  我们在《JavaScript高级程序设计(第三版)》书中能看到,JS中的同名函数,前面的会被最后面的函数覆盖掉,根本无法实现多种功能,如:functionadd(a,b){returnab}functionadd(a,b,c){returnabc}console。log(add(1,2));NaNconsole。log(add(1,2,3));6
  如果我们需要使用JS实现上述add方法,将两个或三个数值进行求和,该怎么解决呢?
  解决1:利用argumentsfunctionadd(){if(reg。length2){returnreg〔0〕reg〔1〕}elseif(reg。length3){returnreg〔0〕reg〔1〕reg〔2〕}}console。log(add(1,2))3console。log(add(1,2,3))6
  上述方法虽然实现了上述简单功能,勉强能算得上是一种函数重载的实现方法,但是存在一定的弊端。
  它的缺点:如果功能复杂时,代码量过大。不利于维护和复用。
  这时候问题来了,利用JS如何实现呢?可以通过闭包的形式可以简单地实现。三、JS如何实现重载?functionaddMethodToObject(obj,name,fn){consttempobj〔name〕obj〔name〕function(){if(fn。lengtharguments。length){returnfn。apply(obj,arguments)}elseif(typeoftempfunction){returntemp。apply(obj,arguments)}}}
  上述方法用来给一个对象添加自定义方法,能够接收三个参数:需要添加方法的对象自定义方法名定义方法具体要实现的功能,通过回调实现addMethodToObject(group,find,function(){return{peoples:this。peoples,count:this。peoples。length}})addMethodToObject(group,find,function(isMale){if(!!isMale){constmalethis。peoples。filter(itemitem。sexmale)return{peoples:male,count:male。length}}else{constfemalethis。peoples。filter(itemitem。sexfemale)return{peoples:female,count:female。length}}})addMethodToObject(group,find,function(elder,age){if(!!elder){constelderthis。peoples。filter(itemitem。ageage)return{peoples:elder,count:elder。length}}else{constyoungerthis。peoples。filter(itemitem。ageage)return{peoples:younger,count:younger。length}}})constgroup{total:10,male:6,female:4,peoples:〔{age:12,sex:male},{age:18,sex:female}〕}group。find()group。find(1)group。find(0,15)
  总结:JS没有函数重载,但是可以实现函数重载
投诉 评论 转载

带摄像头的智能眼镜将在10年内成为常态在Facebook与Luxottica的第一款智能眼镜协作商品RayBanStories公布后,Facebook硬件配置业务流程责任人AndrewBosworth周五在与Ess……芯片被美国卡了脖子,我国可以制造出国产的光刻机么?我国能制造出光刻机,而且跳出西方国家的设计思路,如同氢弹的于敏构造,将西方技术抛开几条街,中国人的聪明才智是天下无敌的。这一点也不用怀疑。不只芯片,这百年来,中国以其惊人……安卓逐渐走向闭源,为何我国手机公司却仍不开发自己的系统呢?除了华为,剩下的手机公司都是自私自利毫无责任的公司。它们看到华为开发鸿蒙系统,不去帮忙合作,而是挖苦,讽刺,拆台。开发一个全新的系统,国内厂商都有这个实力,关键是这个操作……商城系统小程序专业开发商城系统小程序专业开发团队商城系统小程序开发,商城系统小程序专业开发,商城系统小程序搭建开发,商城系统软件开发,商城系统软件搭建开发,商城系统软件专业开发,开发商城系统小程序,搭建开发商城系统小程序,搭……升级iOS15后,面容ID更安全了watchOS8正式版发布watchOS8、tvOS15、HomePod15正式版发布!苹果今天发布了iOS15和iPadOS15,新系统改进了面容ID的防欺诈功能,进一步提升了iPhoneX或更……国产手机的圈子为什么这么乱?原因是什么?因为国内有一小撮人为了利益,而在挖空心思地恶意诋毁对手。另外国内各大手机厂商竞争激烈,为了打击对手,雇佣水军,在网络上带节奏,用情怀,爱国,理想等等手段来吹嘘自己贬低对手……能不能把各位收藏的好的网站或者APP分享给大家?今天青柠设计给大家来个拼全全套餐,史上整理最全的学习类网址,合计66个各类学习类网址,反正我是整理得哭了,千万不要放在收藏夹吃灰,都是些可以让你升职加薪,考试上岸,拓展视野的网……ASML传来两个大动作,英特尔得手了?台积电也没料到这局面在芯片生产制造领域,台积电称第二,相信是没有哪个企业有资格称第一,即便是与台积电并称为芯片生产制造双雄的三星,也是略逊一筹的。台积电之所以在芯片生产制造领域有如此领先全球的实力……迎接世界电信日多家企业助力老年人跨越数字鸿沟再添新举措中国网科技5月17日讯(记者叶小源)据国际电信联盟官网消息,今年世界电信和信息社会日的主题是面向老年人和实现健康老龄化的数字技术。中国网科技了解到,近日,多家企业为助力老年人跨……独立服务器是什么,有哪些用途?1、独立服务器是来搭建网站,运行程序,拥有整台服务器资源,就想生活在公寓里,必须共享一切。2、独立服务器运行时间,独享最高性能,连接速度更快,减少病毒攻击的风险,独立服务……JS中没有函数重载,又是如何实现函数重载的呢?打工仔的周末,不妨来点前端知识!面试官问你JS是如何实现函数重载的?你会怎么回答?你会不会疑问我在书里看的明确讲JS是没有函数重载的,面试官说能实现,那肯定是有办法……9月14日发布?iPhone13系列即将揭晓从最新的爆料信息来看,苹果计划提高即将上市的iPhone13系列价格,以弥补主要芯片供应商台积电(TSMC)增加的芯片生产成本。根据DigiTimes报道的资料显示,苹果……
iPhone14最新CAD外观渲染图曝光,双挖孔设计,边框更试驾小鹏P5跨楼层记忆泊车和高速NGP功能表现如何?互联网存量时代,互联网大厂们面临的两种不同抉择华为路由H6测评五星级组网体验,超大户型全屋千兆WiFi6无想要入华为这样的公司工作,难度有多大?2018java华为面蚂蚁成立SaaS公司国联股份参与创投基金产业互联网周报15万级别100KWh的纯电SUV独此一家直降700元,三星GalaxyA51,是否值得入手?确定iOS14。5。1漏洞可利用,请尽快降级系统孟天广人工智能伦理及其治理要打通科技社群与社会大众崇尚自由的美国,为何一度禁酒?热烈庆祝后海科技与金睿思齐达成合作写树精神的作文800字自驾游住宿篇病毒性脊髓炎如何诊断鉴别?从弥勒和韦陀的故事谈人力资源的整合烧香祈福黑色衣服可以用84泡吗黑色衣服用84洗掉色了怎么办容易家暴的星座天蝎座为什么容易家暴漫游古淮安(淮安区)山园小梅想表达怎样的思想感山园小梅含义甲状腺癌已成女性高发癌众安尊享e生优甲版为女性带来贴心保障精益求精打爆款店铺才能赚大钱到2025年,湖南省99。5的公路路段将实现每50公里就有一

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利