call、apply、bind三者為改變this指向的方法
共同點(diǎn):第一個(gè)參數(shù)都為改變this的指針。若第一參數(shù)為null/undefined,this默認(rèn)指向windowcall(無數(shù)個(gè)參數(shù))
第一個(gè)參數(shù):改變this指向
第二個(gè)參數(shù):實(shí)參
使用之后會(huì)自動(dòng)執(zhí)行該函數(shù)
function fn(a,b,c){ console.log(this,a+b+c); // this指向window } fn(); fn.call(document,1,2,3);//call改變之后this 由 window 指向document //輸出 #document 6 1,2,3是實(shí)參 結(jié)果相加為6apply(兩個(gè)參數(shù))
第一個(gè)參數(shù):改變this指向
第二個(gè)參數(shù):數(shù)組(里面為實(shí)參)
使用時(shí)候會(huì)自動(dòng)執(zhí)行函數(shù)
function fn(a,b,c){ console.log(this,a+b+c); } fn(); fn.apply(document,[1,2,3]);bind(無數(shù)個(gè)參數(shù))
第一個(gè)參數(shù):改變this指向
第二個(gè)參數(shù)之后:實(shí)參
返回值為一個(gè)新的函數(shù)
使用的時(shí)候需要手動(dòng)調(diào)用下返回 的新函數(shù)(不會(huì)自動(dòng)執(zhí)行)
function fn(a,b,c){ console.log(this,a+b+c); //window } fn.bind("小明",1,2,3)(); //手動(dòng)調(diào)用一下
call、apply與bind區(qū)別:前兩個(gè)可以自動(dòng)執(zhí)行,bind不會(huì)自動(dòng)執(zhí)行,需要手動(dòng)調(diào)用call、bind與apply區(qū)別:前兩個(gè)都有無數(shù)個(gè)參數(shù),apply只有兩個(gè)參數(shù),而且第二個(gè)參數(shù)為數(shù)組
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/108936.html
摘要:一前言指向,,,的區(qū)別是一個(gè)經(jīng)典的面試問題,同時(shí)在項(xiàng)目中會(huì)經(jīng)常使用到的原生的方法。中可能會(huì)極大的避免了產(chǎn)生的錯(cuò)誤,有時(shí)候需要維護(hù)老的項(xiàng)目還是有必要了解一下的指向和,,三者的區(qū)別。 一、前言 this指向,apply,call,bind的區(qū)別是一個(gè)經(jīng)典的面試問題,同時(shí)在項(xiàng)目中會(huì)經(jīng)常使用到的原生的js方法。同時(shí)也是ES5中的眾多坑的一個(gè)。ES6中可能會(huì)極大的避免了this產(chǎn)生的錯(cuò)誤,有時(shí)候...
摘要:如果連續(xù)呢結(jié)果會(huì)是什么結(jié)果還是第一個(gè)原因是,在中,多次是無效的。更深層次的原因,的實(shí)現(xiàn),相當(dāng)于使用函數(shù)在內(nèi)部包了一個(gè),第二次相當(dāng)于再包住第一次故第二次以后的是無法生效的。 this 1.其實(shí)js中的this沒那么難理解,當(dāng)找不到this時(shí)記住一句話:誰調(diào)我,我就指誰!new 誰指誰 function text1(){ console.log(this); //指wind...
摘要:不能應(yīng)用下的等方法。首先我們可以通過給目標(biāo)函數(shù)指定作用域來簡(jiǎn)單實(shí)現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個(gè)更加健壯的這次的方法可以綁定對(duì)象,也支持在綁定的時(shí)候傳參。原因是,在中,多次是無效的。 bind 是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:首先我們可以通過給目標(biāo)函數(shù)指定作用域來簡(jiǎn)單實(shí)現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個(gè)更加健壯的這次的方法可以綁定對(duì)象,也支持在綁定的時(shí)候傳參。原因是,在中,多次是無效的。而則會(huì)立即執(zhí)行函數(shù)。 bind 是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:和區(qū)別其實(shí)他們的作用是一樣的,只是傳遞的參數(shù)不一樣而已。接受個(gè)參數(shù),第一個(gè)參數(shù)指定了函數(shù)體內(nèi)對(duì)象的指向,第二個(gè)參數(shù)為數(shù)組或者一個(gè)類數(shù)組??磦€(gè)栗子一個(gè)有意思的事在中,多次是無效的。而則會(huì)立即執(zhí)行函數(shù)。 背景 前兩天在做小程序的需求的時(shí)候用到bind的時(shí)候才想起自己對(duì)這三的東西的了解比較淺薄,這個(gè)時(shí)候用的時(shí)候就有點(diǎn)怕。時(shí)候還是要好好學(xué)習(xí)下,理解下怎么玩。 正文 先說call 和 apply...
閱讀 3570·2021-11-15 11:38
閱讀 910·2021-11-08 13:27
閱讀 2337·2021-07-29 14:50
閱讀 3050·2019-08-29 13:06
閱讀 894·2019-08-29 11:22
閱讀 2469·2019-08-29 11:04
閱讀 3571·2019-08-28 18:23
閱讀 962·2019-08-26 13:46