Javascipt的call和apply的区别 ?

call 和 apply 都是 Function 对象的方法,它们都可以用来改变函数的 this 上下文并立即调用这个函数。它们的主要区别在于参数的传递方式:

  1. call 方法接受的是参数列表,第一个参数是 this 的值,之后是传递给函数的参数。例如:
    function greet(name, age) {
      console.log(`Hello, my name is {name} and I am{age} years old.`);
    }
    
    greet.call(, 'Alice', 25);  // 输出 "Hello, my name is Alice and I am 25 years old."
    

  2. apply 方法接受的是一个参数数组,第一个参数同样是 this 的值,第二个参数是一个数组,其中包含了传递给函数的参数。例如:
    function greet(name, age) {
      console.log(`Hello, my name is {name} and I am{age} years old.`);
    }
    
    greet.apply(, ['Alice', 25]);  // 输出 "Hello, my name is Alice and I am 25 years old."
    

    在 ES6 中,你还可以使用扩展运算符(spread operator)和 apply 达到和 call 相同的效果:

    greet.apply(, ['Alice', 25]);  // 使用 apply
    greet(...['Alice', 25]);  // 使用扩展运算符,效果和上面一样
    

    总的来说,call 和 apply 的功能是相同的,只是参数的传递方式不同。你可以根据实际需求选择使用哪一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值