• this 的显示绑定-call、apply


    简单的栗子:

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

      a:2  

    };

    foo.call(obj);//2  call把foo中的this指向了obj

    ------------------------------注意↓  "装箱"

    当第一个参数传入的是:字符串类型、布尔、数字类型   这个原始值会被转换成它的对象形式

    new String()  

    new Boolean()

    new Number()

    -----------------------------显示绑定-栗子1↓

    function foo(){

      console.log(this.a);

    }
    var obj={
      a:2
    };
    var bar=function(){

      foo.call(obj);

    };

    bar();//

    setTimeout(bar,100);//
    bar.call(window);//
    -----------------------------显示绑定-栗子2↓

    function foo(something){//3
      console.log(this.a,something);this.a=2 
      return this.a+something;  //5
    }
    var obj={

      a:2

    };

    var bar=function(){
      return foo.apply(obj,arguments);  //arguments=3    foo中的this指向了obj  

    };
    var b=bra(3);
    console.log(b);//5

    -----------------------------显示绑定-栗子3---------------Function.prototye.bind↓

    function foo(something){

      console.log(this.a,something);
      return this,a+something;

    }

    function bind(fn,obj){//辅助绑定函数

      return function(){

        return fn.apply(obj,arguments);

      }

    }
    var obj={

      a:2

    };
    var bar=bind(foo,obj);

    var b=bar(3);
    console.log(b);

    ------------------------后续详细说call、apply的参数

  • 相关阅读:
    第十四次会议
    第十三次会议
    第十二次会议
    第十一次会议
    第十次会议
    第九次会议
    第八次会议
    第七次会议
    第六次会议
    机器学习
  • 原文地址:https://www.cnblogs.com/trend/p/7527573.html
Copyright © 2020-2023  润新知