日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

“约见”面试官系列之常见面试题之第六十四篇之call和apply区别(建议收藏)

發(fā)布時(shí)間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 “约见”面试官系列之常见面试题之第六十四篇之call和apply区别(建议收藏) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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ù)雜案例:
?

function log(){var args=Array.prototype.slice.call(arguments);//將參數(shù)轉(zhuǎn)為數(shù)組//slice(start,end(非必須) )方法可從已有的數(shù)組中返回選定的元素。//Javascript函數(shù)中的參數(shù)對(duì)象arguments是個(gè)對(duì)象,而不是數(shù)組。但它可以類似數(shù)組那樣通過(guò)數(shù)字下表訪問(wèn)其中的元素,而且它也有l(wèi)ength屬性標(biāo)識(shí)它的元素的個(gè)數(shù)。通常我們把它轉(zhuǎn)換成數(shù)組用Array的slice函數(shù),示例代碼如下:function fn() { var arr = Array.prototype.slice.call(arguments,0);}//所以Array.prototype.slice.call(arguments)就是將參數(shù)轉(zhuǎn)為數(shù)組然后返回?cái)?shù)組console.log(args);//Array [ "hello", "world" ]args.unshift('(gykj)');//unshift(a,b,c)向數(shù)組的開(kāi)頭添加至少一個(gè)元素console.log(args);//Array [ "(gykj)", "hello", "world" ]console.log.apply(console,args);//(gykj) hello world 這里的apply可以將數(shù)組元素作為字符參數(shù)輸出//由于參數(shù)個(gè)數(shù)不確定這里只能使用apply } log('hello','world')

本面試題為前端??济嬖囶},后續(xù)有機(jī)會(huì)繼續(xù)完善。我是歌謠,一個(gè)沉迷于故事的講述者。

歡迎一起私信交流。

“睡服“面試官系列之各系列目錄匯總(建議學(xué)習(xí)收藏)?

總結(jié)

以上是生活随笔為你收集整理的“约见”面试官系列之常见面试题之第六十四篇之call和apply区别(建议收藏)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。