改变this指向的三种方式

简介: 改变this指向的三种方式

这周想分享一下我之前考核不知道的一个知识点,即改变this指向的三种方式:

1.call()方法

function.call(thisArg, 参数1, 参数2, 参数3…)

function: 要改变this指向的原函数

thisArg: 要改变到的this指向的目标对象

function fun (name) {
  this.name = name
  console.log(this)
}
var obj = {
  name: 'dpn',
  b: function () {
  console.log(this.name)
  }
}
fun.call(obj, 'dulin') 
//把fun函数的this指向改变到obj函数,改变的name是obj中的name
this输出obj对象,并且name改变为'dulin'

2.apply()方法

function.apply(thisArg, [参数1, 参数2, 参数3…])

function: 要改变this指向的原函数

thisArg: 要改变到的this指向的目标对象

function fun (name) {
  this.name = name
  console.log(this)
}
var obj = {
  name: 'dpn',
  b: function () {
  console.log(this.name)
  }
}
fun.apply(obj, ['dulin'])
//把fun函数的this指向改变到obj函数,改变的name是obj中的name
this输出obj对象,并且name改变为'dulin'

3.bind()方法

funtion.bind(thisArg, 参数1, 参数2, 参数3…)

function: 要改变this指向的原函数

thisArg: 要改变到的this指向的目标对象

该方法并不会调用函数,仅仅改变了this指向

function fun (name) {
  this.name = name
  console.log(this)
}
var obj = {
  name: 'dpn',
  b: function () {
  console.log(this.name)
  }
}
var fun1 = fun.bind(obj, 'dulin')
fun1()
//把fun函数的this指向改变到obj函数,改变的name是obj中的name
this输出obj对象,并且name改变为'dulin'

三种方法的区别

b9618540b3064c2cbe12c3277acc58f5.png

目录
相关文章
|
Ubuntu Linux 测试技术
Python 虚拟环境配置
本文总结了 Python 开发中的环境配置、常用操作和常见错误处理。重点介绍了如何使用 `virtualenv` 搭建虚拟环境,解决依赖冲突问题,并保持系统环境的干净。同时,详细说明了依赖库的安装与管理方法,包括使用 `pip install` 安装依赖、生成和使用 `requirements.txt` 文件,以及查看 Python 文档和修改环境变量等实用技巧。
1276 60
|
SQL 移动开发 前端开发
ruoyi-nbcio从spring2.7.18升级springboot到3.1.7,java从java8升级到17(一)
ruoyi-nbcio从spring2.7.18升级springboot到3.1.7,java从java8升级到17(一)
891 0
|
存储 监控 物联网
RFID仓储管理几大核心要素
RFID仓储管理系统通过多个核心要素实现智能化管理。其中包括RFID标签选型,根据物品特性选择适合的标签类型;RFID读写器选型,合理布局以覆盖关键区域;中间件处理数据,提升系统兼容性;仓储管理系统(WMS)实时监控库存与作业调度;人员培训确保规范操作。该系统在入库、出库、盘点等环节减少人工失误,降低成 本,提高效率,推动仓储管理向自动化、数字化转型。
|
网络协议 搜索推荐 Linux
Minecraft配置文件参数说明(基岩版服务器篇)
server.properties 是 Minecraft Bedrock 服务器的核心配置文件,用于定义服务器的基本设置和运行规则。文件通常位于服务端根目录(Windows 示例路径:`C:\bedrock-server`;Linux 示例路径:`/opt/bedrock-server/` 或自定义路径)。根据需求调整参数,可实现个性化服务器配置。
1818 2
|
供应链 监控 安全
业务上云的主要安全风险及网络安全防护建议
业务上云面临数据泄露、配置错误、IAM风险、DDoS攻击、合规与审计、供应链及内部威胁等安全挑战。建议采取全生命周期加密、自动化配置检查、动态权限管理、流量清洗、合规性评估、供应链可信验证及操作审批等措施,构建“预防-检测-响应”一体化安全体系,确保数据保护、权限收敛、合规审计和弹性防护,保障云端业务安全稳定运行。
1945 1
|
网络协议 安全 应用服务中间件
服务器最大支持多少链接数
本文探讨了单台服务器最大支持的链接数问题,指出操作系统通过四元组(本地IP、本地端口、远程IP、远程端口)唯一标识TCP链接。链接数不仅受限于端口数量(65535),还与系统文件句柄上限、内存资源及是否绑定多个IP地址有关。通过调整系统配置和利用多IP技术,理论上可大幅提高单机支持的链接数,但实际应用中还需考虑硬件资源限制。
1274 16
|
开发工具 git
【经验分享】关于RT-Thread studio gitee源下载软件包失败以及git拉取Gitee仓库报错
【经验分享】关于RT-Thread studio gitee源下载软件包失败以及git拉取Gitee仓库报错
1718 0
|
JavaScript 编译器 数据安全/隐私保护
TypeScript :关键字
本文介绍了 TypeScript 中的一些核心类型和工具类型,包括 `interface` 和 `type` 的基本使用和区别,以及一些高级类型如 `keyof`、`Record`、`Pick`、`Partial`、`Readonly` 和 `Omit` 的使用方法。文章还详细解释了 `namespace` 的作用和使用场景,帮助开发者更好地组织和管理代码,避免命名冲突,并提高代码的可维护性和可读性。
433 1
|
机器学习/深度学习 算法 数据挖掘
深入理解SVM中的核函数及其应用
深入理解SVM中的核函数及其应用
1022 0
|
机器学习/深度学习 数据采集 算法
一个 python + 数据预处理+随机森林模型 (案列)
本文介绍了一个使用Python进行数据预处理和构建随机森林模型的实际案例。首先,作者通过删除不必要的列和特征编码对数据进行了预处理,然后应用随机森林算法进行模型训练,通过GridSearchCV优化参数,最后展示了模型的评估结果。
712 0

热门文章

最新文章