bind()

bind;

        在创建函数的时候,定义好函数的this指向,然后函数的this指向不因任何外部环境而改变;

         函数的this指向 , 函数的调用者;

         var obj = {
              name:"obj",
              a : function(){
                    console.log(this);
              }
        }
        
        obj.a(); //this => obj;

        var fn = obj.a;
         fn();   // this => window;

       同一个函数因为调用者的不同,this的指向是会发生改变的;
        this 谨慎使用;


        bind => 让函数的this 不会发生改变; 变成固定值;

        *** bind 只能用在匿名函数上!!
         var fn = function (){
               console.log(this);
         }.bind({});

       fn();

         var obj = {
               a : function(){
                     console.log(this);
               }.bind({a:1})
         }

       
         obj.a();// this => obj;
         var fn = obj.a;
         fn();  // this => window;
         bind根据前面的函数创建了一个新函数返回出来;这时候我们赋值给 fn 的函数是bind创建的新函数;



         var obj = {
              fn : function(){ 
                     // fn1 ;
                     return function(){
                           // fn2;
                     }
               }
         }

         var a = obj.fn();

         相当于给a赋值了 obj 中 fn 函数的返回值;
        
         bind 还可以定义参数;

         var fn = function(a,b,c){
               console.log(a,b,c)
         }.bind({},1,2,3)
         fn(456,1234563,123456);

         bind定义的值,其余任何方法方式都没办法改变
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值