zoukankan      html  css  js  c++  java
  • 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 © 2011-2022 走看看