bind方法和this的指向

bind方法和this的指向

       函数A调用bind(),会在该函数的基础上建立一个新的函数;新函数其实就是就原函数,只是给函数起了个新的名字;

      传入bind()的第一个参数就是新函数的this;新函数的执行顺序和原函数一样,bind()的第一个参数只是改变了新函数中this的指向;bind()后的第2个及之后的参数在调用新函数时作为实参给新函数传参

var A = {      

       name:"小a在唱歌" ,

        feng:function(){

        console.log(this.name);

        }

    }

    A.feng(); //执行结果是:小a在唱歌

    var B = {

        name:"小b在唱歌"

    }

    var C = A.feng.bind(B);//此时,新函数C中的this指向对象B;

    console.log(C); //此时C就是 A对象中的feng:function(){ console.log(this.name);}

    C();      //执行函数C,并输出函数B的name;执行结果是:小b在唱歌


// 定时器中this的改变
var obj = {

        name:"admin",

        show:function(){

            demo.bind(this);//此时this指向object

            setTimeout(demo.bind(this),1000)//此时this(object)作为新函数的第一个参数,即新函数this的指向是object

        }

    }

    function demo(){

        console.log(this)

    }

    obj.show();//输出结果为object

你可能感兴趣的:(bind方法和this的指向)