首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JS 的 apply 方法

JS 的 apply 方法

作者头像
很酷的站长
发布于 2022-12-05 16:12:50
发布于 2022-12-05 16:12:50
4.2K0
举报
1. 前言

apply() 的作用有两个: 1. 改变 this 指向 2. 将数组入参变为一般入参

刚开始看到 apply() 时,对它的用法非常模糊,而且不易理解,通过查找相关文章,才慢慢的明白它的妙用

2. 改变 this 指向

相信在网上查找 apply() 用法时,都会看到下面这段代码,首次运行,看到输出的结果,我是懵逼的

代码语言:javascript
复制
var person = {
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName: "Bill",
lastName: "Gates",
}
const res = person.fullName.apply(person1)
console.log(res); // Bill Gates

如何理解 apply() 这段代码 ?

person.fullName() 调用 this.firstName 和 this.lastName 这两个属性,this 指向 person,但它没有这两个属性

使用 apply() 方法可以改变 this 的指向,将 this 的指向改为 person1,所以 person.fullName() 方法就可以成功访问到 this.firstName 和 this.lastName 这两个属性的值了

person.fullName.apply(person1) 可以理解为下面代码,但不要这么写,本质不一样

代码语言:javascript
复制
person1.fullName = person.fullName
person1.fullName()
3. 将数组入参变为一般入参

以 Math.max() 举例

源码下载站

  • // 正确用法
  • Math.max(1, 2, 3)
  • // 错误用法
  • Math.max([1, 2, 3])

使用 apply() 的第二个参数将数组入参变为一般入参

注意,这里的第一个参数值为 null,也就是没有改变 this 的指向

  1. Math.max.apply(null, [, , ])
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 1. 前言
  • 2. 改变 this 指向
  • 3. 将数组入参变为一般入参
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档