javascript call apply bind整理

一直沒(méi)看懂Function.call() apply() bind(),今天研究了下,大概明白了。但是詳細(xì)的還是不明白。
先講講已經(jīng)明白的:

作用:

劫持某個(gè)對(duì)象,使原先的方法fun中可以調(diào)用劫持對(duì)象的方法和屬性;可以直接使用param1,param2...

使用方法:
fun.call(劫持的對(duì)象,param1,param2,param3,...);
fun.apply(劫持的對(duì)象,[param1,param2,param3,...]);        
fun.bind(劫持的對(duì)象,[param1,param2,param3,...])();

三個(gè)方法的作用是一樣的。唯一的區(qū)別就是參數(shù)的傳遞形式不一樣。第一個(gè)參數(shù)劫持的對(duì)象是fun方法里面的this要指向的地方,必填。其他的參數(shù)非必填。注意bind后面有一個(gè)括號(hào)

代碼示例:
          var objLi = {
        name:'小李子obj',
        age: 30,
        myFun:function(one,two){
            // console.log(this,'myFun里的this 僅指objLi');
            console.log('this.name : '+this.name+'  this.age年齡:'+this.age,'  one參數(shù)is ',one,'  參數(shù)two是 ',two);
        }
    }
    console.log(objLi.age,'====objLi age');
    objLi.myFun('one','two');

    var db={ name:'小甜甜', age:20 };
            
    console.log('fun call apply bind無(wú)參數(shù) ↓↓↓↓↓↓↓↓↓↓')
    objLi.myFun.call(db);
    objLi.myFun.apply(db);
    objLi.myFun.bind(db)();

    console.log('fun call apply bind都有參數(shù) ↓↓↓↓↓↓↓↓↓↓')
    objLi.myFun.call(db,'callOne','callTwo');
    objLi.myFun.apply(db,['applyOne','applyTwo']);      
    objLi.myFun.bind(db,['bindOne','bindTwo'])();

打印結(jié)果,注意bind的打印參數(shù).png
經(jīng)典案例 Math.max.apply
var tmpArray = [1,2,3,4,5,3,2,1];
var tmpMax = Math.max(...tmpArray);
console.log('最大值是  ',tmpMax); //最大值是   5
var tmpMaxApply = Math.max.apply(null,tmpArray); //這里的null也可以寫(xiě)成Math
console.log('最大apply值是  ',tmpMaxApply); //最大apply值是   5

關(guān)于Math.max(...tmpArray),是最新的擴(kuò)展語(yǔ)句spread operator

案例:數(shù)組push
array使用apply.png

上圖中array使用apply方法,意思就是:
在push方法中,this指向了arr1,向arr1中添加arr2中的值

總結(jié):看不懂沒(méi)關(guān)系,自己一個(gè)一個(gè)的敲代碼,自己運(yùn)行看看結(jié)果,多練習(xí)就大概能明白了。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容