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