前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >call()方法和apply()方法有什么区别?

call()方法和apply()方法有什么区别?

作者头像
王小婷
发布2023-10-31 13:58:32
1490
发布2023-10-31 13:58:32
举报
文章被收录于专栏:编程微刊编程微刊

call() 和 apply() 都是 JavaScript 中用于调用函数的方法,它们的主要区别在于参数的传递方式。

call() 方法:

call() 方法是 JavaScript 函数的原生方法之一,它允许你在指定的作用域内调用函数,并且可以显式地设置函数的 this 值和传递参数列表。

call() 方法的语法如下:

代码语言:javascript
复制
functionName.call(thisArg, arg1, arg2, ...)
  • functionName:要调用的函数名。
  • thisArg:设置函数中的 this 值的对象。在函数执行时,this 将指向 thisArg。
  • arg1, arg2, ...:传递给函数的参数列表。 示例:
代码语言:javascript
复制
function greet(name) {
  console.log(`Hello, ${name}! I'm ${this.job}.`);
}

const person = {
  job: 'developer'
};

greet.call(person, 'John');
// 输出:Hello, John! I'm developer.

在上面的示例中,call() 方法用于将函数 greet 中的 this 值设置为 person 对象,并传递了 'John' 作为参数。

apply() 方法:

apply() 方法与 call() 方法类似,也是用于在指定的作用域内调用函数,但它接受的参数是以数组或类数组对象的形式传递。

apply() 方法的语法如下:

代码语言:javascript
复制
functionName.apply(thisArg, [argsArray])
  • functionName:要调用的函数名。
  • thisArg:设置函数中的 this 值的对象。在函数执行时,this 将指向 thisArg。
  • argsArray:以数组或类数组对象形式传递给函数的参数。 示例:
代码语言:javascript
复制
function greet(name) {
  console.log(`Hello, ${name}! I'm ${this.job}.`);
}

const person = {
  job: 'developer'
};

greet.apply(person, ['John']);
// 输出:Hello, John! I'm developer.

在上面的示例中,apply() 方法将函数 greet 中的 this 值设置为 person 对象,并传递了 ['John'] 作为参数。

主要区别:

  • call() 方法使用逗号分隔的参数列表来传递参数,而 apply() 方法使用数组或类数组对象来传递参数。
  • 当参数个数未知或可变时,apply() 方法通常更方便,可以通过动态地构建参数数组来调用函数。
  • 如果只需指定函数的 this 值且不需要传递参数,两者的效果是相同的。

总结,call() 和 apply() 方法都允许你在指定的作用域内调用函数,并设置函数的 this 值,但参数的传递方式不同。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • call() 方法:
  • apply() 方法:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档