zoukankan      html  css  js  c++  java
  • apply,call,bind

    apply,call

    apply和call在调用时改变了this的指向
          function f1(x,y) {
             console.log((x+y)+":===>"+this);
             return "这是函数的返回值";
           }
           //apply和call调用
           var r1=f1.apply(null,[1,2]);//此时f1中的this是window
           console.log(r1);
           var r2=f1.call(null,1,2);//此时f1中的this是window
           console.log(r2);
           console.log("=============>");
           //改变this的指向
           var obj={
             sex:"男"
           };
           //本来f1函数是window对象的,但是传入obj之后,f1函数此时就是obj对象的
           var r3=f1.apply(obj,[1,2]);//此时f1中的this是obj
           console.log(r3);
           var r4=f1.call(obj,1,2);//此时f1中的this是obj
           console.log(r4);
    
    apply和call的使用方法
    apply的使用语法
         函数名字.apply(对象,[参数1,参数2,...]);
         方法名字.apply(对象,[参数1,参数2,...]);
    call的使用语法
         函数名字.call(对象,参数1,参数2,...);
         方法名字.call(对象,参数1,参数2,...);
    
    作用:改变this的指向
        不同的地方:参数传递的方式是不一样的
        只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call的方法改变this的指向
    

    bind

    bind方法是复制一个函数或方法,在复制的同时改变了this的指向
    参数可以在复制的时候传进去,也可以在复制之后调用的时候传入进去
    apply和call是调用的时候改变this指向
    
    function Person(age) {
          this.age=age;
        }
        Person.prototype.play=function () {
          console.log(this+"====>"+this.age);
        };
    
        function Student(age) {
          this.age=age;
        }
        var per=new Person(10);
        var stu=new Student(20);
        //复制了一份
        var ff=per.play.bind(stu);
        ff();
        //bind是用来复制一份
        //使用的语法:
        /*
        * 函数名字.bind(对象,参数1,参数2,...);---->返回值是复制之后的这个函数
        * 方法名字.bind(对象,参数1,参数2,...);---->返回值是复制之后的这个方法
        *
        * */
    

    比我的更详细https://www.cnblogs.com/moqiutao/p/7371988.html

  • 相关阅读:
    MSP430开学的序章
    此地不留爷,自有留爷处
    【javascript】继承
    【css】css3属性
    【计划】合格的前端
    【grunt】grunt 基础学习
    【防火墙】防火墙分类,过滤流程
    【js】name 与 array 的纠葛
    【TRICK】解决锚点定位向下浮动Xpx问题
    【性能】web提升性能的小总结
  • 原文地址:https://www.cnblogs.com/huihuihero/p/11334595.html
Copyright © 2011-2022 走看看