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的参数

  • 相关阅读:
    IntelliJ IDEA 快捷键大全
    springboot整合jsp 遇到的问题
    mysql数据库中某字段一部分乱码
    Spring-boot整合Redis,遇到的问题
    遍历对象和数组的forEach函数
    获取随机数,要求长度一致的字符串格式
    获取yyyy-mm-dd格式的日期
    JS对象常用API
    数组常用API
    JS中异步和单线程
  • 原文地址:https://www.cnblogs.com/trend/p/7527573.html
Copyright © 2011-2022 走看看