“约见”面试官系列之常见面试题之第六十四篇之call和apply区别(建议收藏)
call和apply用來(lái)調(diào)用函數(shù),并用指定對(duì)象(第一個(gè)參數(shù))替換函數(shù)的 this 值,同時(shí)用指定數(shù)組替換函數(shù)的參數(shù)。注:也可以不指定參數(shù),此時(shí)只是單純的調(diào)用函數(shù),如:fun.call()
語(yǔ)法:
fun.call(thisobj,arg1,arg2) ;當(dāng)后面參數(shù)個(gè)數(shù)確定時(shí)用call,參數(shù)之間用逗號(hào)連接
fun.apply(thisobj,[arg1,arg2]);當(dāng)后面參數(shù)個(gè)數(shù)不確定時(shí)用apply,參數(shù)通過(guò)數(shù)組形式輸入
call和apply的作用:
改變this的指向,第一個(gè)參數(shù)為你要傳入的對(duì)象,傳入后函數(shù)的this就指向了這個(gè)對(duì)象,后面的參數(shù)為你為函數(shù)傳遞的參數(shù)值
簡(jiǎn)單案例:
var str='js'; function fo(){var str='jq';console.log(this.str);//此時(shí)this指向windowconsole.log(this===window);console.log(this===obj);//輸出js,true,false } fo(); var obj={str:'html' }; fo.call(obj)//輸出html,false,true,這就證明了call將fo的this指向改為了obj; var ob={str:'css', } var get=function(){console.log(str);//js 此時(shí)讀取的是全局變量的值console.log(this.str);//css 此時(shí)this指向了ob,返回的就是ob.str } get.call(ob)復(fù)雜案例:
?
本面試題為前端??济嬖囶},后續(xù)有機(jī)會(huì)繼續(xù)完善。我是歌謠,一個(gè)沉迷于故事的講述者。
歡迎一起私信交流。
“睡服“面試官系列之各系列目錄匯總(建議學(xué)習(xí)收藏)?
總結(jié)
以上是生活随笔為你收集整理的“约见”面试官系列之常见面试题之第六十四篇之call和apply区别(建议收藏)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Android智能硬件开发】【009】
- 下一篇: iOS上架app store下载步骤