call和apply

1、call方法和apply方法非常像,它们的区别只有唯一的一点;

2、call方法下面有几个参数:

· 第一个参数是改变函数里面的this的指向:因为例子中直接调用getName的话,this指向的是person,所以返回的是person的name;

而通过call方法间接调用的时候,就可以指定this的值,如果将this指向了window,返回的是window.name,结果是‘xm’;

	var name='xm';
    var person={};
    person.name='xh';
    person.getName=function(){
      return this.name;
    };
    console.log(person.getName());  //直接调用
    console.log(person.getName.call(window));

在这里插入图片描述
3、如果用apply,在第一个参数上,apply和call是完全一样的;也就是只传第一个参数,不传后面的参数的话,它们两的作用是完全一样的;

	var name='xm';
    var person={};
    person.name='xh';
    person.getName=function(){
      return this.name;
    };
    console.log(person.getName());  //直接调用
    console.log(person.getName.call(window));
    console.log(person.getName.apply(window));

在这里插入图片描述4、call和apply的区别只在后面的参数:

· call的第一个参数是改变this的值;因为例子中没有用到this,所以改不改都行,比如写个window;

· 接下来的参数是:传递在函数中的参数;call传参数的方式是一个一个的传,比如1,2,3;

· 而apply接下来传的参数是是和call不同的,这也是它们唯一的不同;apply不是一个一个的传递参数,它是通过一个数组来传的;

· 也就是apply一般来说只有两个参数,第一个this的指向,第二个数组;

	function add(num1,num2){
      return num1+num2;
    }
   
    console.log(add(1,2));
    console.log(add.call(window,1,2));
    console.log(add.apply(window,[1,2]));

在这里插入图片描述
5、call和apply的用法:

· 比如,例子中的add如果想调用,就必须得一个一个的传参,可如果从别的地方得到了参数,它不是一个字符串形式的,而是一个数组形式的,比如var datas=[1,2];

· 这个时候,apply就发挥用处了,直接将datas传进去就行,它就会自动的对应到函数里;

    function add(num1,num2){
      return num1+num2;
    }
   
    console.log(add(1,2));
    var datas=[1,2];
    console.log(add.apply(window,datas));

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值