实战IT培训机构_黄色激情网站_IT培训班选大学生IT技术培训中心_黄色激情视频网站_中公优就业

400-650-7353
您所在的位置:首頁 > IT干貨資料 > web前端 > 【Web前端基礎知識】call和apply的作用

【Web前端基礎知識】call和apply的作用

  • 發布: Web前端培訓
  • 來源:
  • 2021-07-26 15:31:02
  • 閱讀()
  • 分享
  • 手機端入口

this 在不同的地方有不同的含義:

1. 在事件處理函數中,this指向觸發函數的對象;

2. 在普通函數中,this指向window;

3. 當作函數作為某個對象的方法調用時,this指向那個對象;

4. 在構造函數中this指向當前實例化對象;

【Web前端基礎知識】call和apply的作用

當在一些情況中我們想要更改this的指向,這里就可以使用 call 與 apply 來改變 this 的指向,讓 this 指向特定的對象。

call 與 apply 的作用都是改變 this 的指向,基本的操作都是一樣的。其使用方法如下:

call(this指向,參數1,參數2...)

apply(this指向,[參數1,參數2...])

可以看到他們的傳參方式是不一樣的。想要修改this 的指向,那么必然有一個this修改后的指向,而函數必然后關系到傳參問題:call方法可以傳給該函數的參數分別作為自己的多個參數,而apply方法必須將傳給該函數的參數合并成一個數組作為自己的一個參數。

  1. function sum(a,b){ 
  2. console.log(a+b);     // 30 
  3.        console.log(this);  // 原本指向window,現在指向sum了 
  4. sum.call(sum,10,20) 

通過使用call方法,使得sum函數中原本指向window的this現在指向了sum自身,當然this的指向自己想指向哪里都可以。

另外還可以改變對象的this

  1. var obj1 = { 
  2.     "name":"韓梅梅", 
  3.     "getName":function(){ 
  4.         console.log(this.name); 
  5.     } 
  6. obj2 = { 
  7.     "name":"李雷" 
  8. obj1.getName();         // 韓梅梅 
  9. obj1.getName.call(obj2);// 李雷 

可以看到在obj1第一次調用getName方法時,結果為韓梅梅,因為調用getName時this指向obj1自身。在第二次調用getName方法時,使用了call方法改變了this的指向,讓this指向了obj2,故打印時this.name成了obj2.name,為李雷。

改變this一般用于借用別的對象的方法,當想使用某個自己沒有而別的對象有的方法時,就可以通過改變this的指向來借用別對象的方法。如:

  1. var n = {};  
  2. console.log(n.toString()); // [object Object]  
  3. // 對象的toString方法可以獲取數據的具體類型,若是也想獲取數組的具體數據類型可以借用對象的該方法。 
  4. console.log(Object.prototype.toString.call([]));    // [object Array] 

apply的使用和call的使用方式是一樣的,只是在于向函數傳參時是以一個數組的形式,就如上面例子中使用call改變函數sum的指向時,若是使用apply則為:sum.apply(sum,[10,20]),第一個為改變后的this指向,第二個參數為數組,若在進行傳參時第二個參數的格式不對,會報錯。

apply的巧妙用法:

使用Math.max可以得到數組中最大的一項

因為Math.max不支持Math.max([參數1,參數2...])也就是數組,但是它支持Math.max (參數1,參數2...)的形式,所以可以根據apply的特點來解決這個問題,因為剛好apply的第二個參數為一個數組,可以將這個數組作為apply的第二個參數傳入,這樣apply會將一個數組轉換為一個參數接一個參數的方式傳遞給方法。

  1. var arr = [6,3,8,9,12,5] 
  2. console.log(Math.max.apply(1,arr)); // 12 

這樣就輕易的可以得到一個數組中的最大項。

這塊在調用的時候第一個參數給了1,這是因為沒有對象去調用這個方法,我只需要用這個方法幫我運算,得到返回的結果就行,所以直接傳遞了一個1過去。用這種方法也可以實現得到數組中的最小項:Math.min.apply(1,array)

文章“【Web前端基礎知識】call和apply的作用”已幫助

更多內容

>>本文地址:http://m.jecan.cn/zhuanye/2021/69433.html

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

1 您的年齡

2 您的學歷

3 您更想做哪個方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

主站蜘蛛池模板: BHK汞灯-百科|上海熙浩实业有限公司 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 成都思迪机电技术研究所-四川成都思迪编码器 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 滚塑PE壳体-PE塑料浮球-警示PE浮筒-宁波君益塑业有限公司 | 双相钢_双相不锈钢_双相钢圆钢棒_双相不锈钢报价「海新双相钢」 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 元拓建材集团官方网站| 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | 特材真空腔体_哈氏合金/镍基合金/纯镍腔体-无锡国德机械制造有限公司 | 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 高温热泵烘干机,高温烘干热泵,热水设备机组_正旭热泵 | 济南货架定做_仓储货架生产厂_重型货架厂_仓库货架批发_济南启力仓储设备有限公司 | 蜂蜜瓶-玻璃瓶-玻璃瓶厂-玻璃瓶生产厂家-徐州贵邦玻璃制品有限公司 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 蜜蜂职场文库_职场求职面试实用的范文资料大全| 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 百度网站优化,关键词排名,SEO优化-搜索引擎营销推广 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 机械立体车库租赁_立体停车设备出租_智能停车场厂家_春华起重 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 亳州网络公司 - 亳州网站制作 - 亳州网站建设 - 亳州易天科技 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 模型公司_模型制作_沙盘模型报价-中国模型网 |