<b id="wionh"></b>

<u id="wionh"><address id="wionh"><meter id="wionh"></meter></address></u>

js中call,apply,bind的使用區別

時間:2023-01-21 16:25:12 類型:JS/JQUERY
字號:    

一、call,apply,bind的相同點:

        都是改變this指向的;

        第一個參數都是this要指向的對象;

        都可以利用后續參數傳參;

二、call,apply,bind的區別:

        call和bind的參數是依次傳參,一一對應的;

        但apply只有兩個參數,第二個參數為數組;

        call和apply都是對函數進行直接調用(函數已經執行),而bind方法返回的仍是一個函數(新生成一個新的函數);

const person = {
            name: "小明",
            age : 16,
            hobby:"打游戲",
            score:100,
            speak:function(hobby,score){
                console.log("名字",this.name,"年齡",this.age,hobby,score);
            }
       }
       person.speak();
       let p1 = {name:"小敏",age:17};
       person.speak.call(p1,"吹牛皮",90);
       //改變speak中this的指向 為p1。 并同時執行, 同時參數按照順序傳遞

       let p2 = {name:"小小強",age:18};
       person.speak.apply(p2,["唱歌",20]);  
       //改變speak中this的指向 為p2。 并同時執行, 參數只有兩個,且第二個必須為數組

       let p3 = {name:"小王",age:19};
       let pp = person.speak.bind(p3,"游泳",96);
       //改變speak中this的指向為p3, 但并沒有執行,返回一個新的函數, 傳遞參數按照順序執行
           pp(); //執行新的函數


中文无码妇乱子二区三区_久久亚洲精品无码福利播放_毛片一级_日韩aⅴ无码久久精品免费

<b id="wionh"></b>

<u id="wionh"><address id="wionh"><meter id="wionh"></meter></address></u>

<