JavaScript之apply方法,call方法,bind方法

apply和call

作用:改变this的指向    不同的地方:参数传递的方式是不一样的

只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call的方法改变this的指向

apply的使用语法


* 函数名字.apply(对象,[参数1,参数2,...]);
* 方法名字.apply(对象,[参数1,参数2,...]);


* call的使用语法


* 函数名字.call(对象,参数1,参数2,...);
* 方法名字.call(对象,参数1,参数2,...);
 

 

  function Person(age,name) {
      this.age=age;
      this.name=name;
    }
    //通过原型添加方法
    Person.prototype.sayHi=function (x,y) {
      console.log("你好啊:"+this.name);
    };
    function Student(sex,name) {
      this.name=name;
      this.sex=sex;
    }
    var stu=new Student("人妖","学生");
    var per=new Person(18,"梦婉");
    per.sayHi.apply(stu,[10,20]);//您好啊:学生
    per.sayHi.call(stu,10,20);//您好啊:学生
    per.sayHi.apply(null,[10,20]);//你好啊:
    per.sayHi.call(null,10,20);//你好啊:
    per.sayHi();//你好啊:梦婉

apply和call方法中如果没有传入参数,或者是传入的是null,那么调用该方法的函数对象中的this就是默认的window

bind方法

bind是用来复制一份的时候改变指向(apply和call是调用的时候改变指向)

函数名字.bind(对象,参数1,参数2,...);---->返回值是复制之后的这个函数
方法名字.bind(对象,参数1,参数2,...);---->返回值是复制之后的这个方法

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();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值