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