前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JS改变this指向的三种方法 (转载非原创)

JS改变this指向的三种方法 (转载非原创)

作者头像
wxilejun
发布于 2022-09-15 14:43:32
发布于 2022-09-15 14:43:32
68500
代码可运行
举报
文章被收录于专栏:wxilejun的专栏wxilejun的专栏
运行总次数:0
代码可运行

转载来源: https://www.cnblogs.com/mochenxiya/p/16698139.html

一、this指向

点击打开视频讲解更加详细

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this随处可见,一般谁调用,this就指向谁。this在不同环境下,不同作用下,表现的也不同。

以下几种情况,this都是指向window

1、全局作用下,this指向的是window

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
console.log(window);
console.log(this);
console.log(window == this); // true

2、函数独立调用时,函数内部的this也指向window

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function fun() {
   console.log('我是函数体');
   console.log(this);  // Window 
}
fun();

3、被嵌套的函数独立调用时,this默认指向了window

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function fun1() {
    function fun2() {
        console.log('我是嵌套函数');
        console.log(this);  // Window
    }
    fun2();
}
fun1();

4、自调执行函数(立即执行)中内部的this也是指向window

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(function() {
    console.log('立即执行');
    console.log(this);   // Window
})()

需要额外注意的是:

  • 构造函数中的this,用于给类定义成员(属性和方法)
  • 箭头函数中没有this指向,如果在箭头函数中有,则会向上一层函数中查找this,直到window

二、改变this指向

1、call() 方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
call() 方法的第一个参数必须是指定的对象,然后方法的原参数,挨个放在后面。
(1)第一个参数:传入该函数this执行的对象,传入什么强制指向什么;
(2)第二个参数开始:将原函数的参数往后顺延一位

用法: 函数名.call()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串call
    console.log(a + b);
}
//使用call() 方法改变this指向,此时第一个参数是 字符串call,那么就会指向字符串call
fun.call('call', 2, 3)  // 后面的参数就是原来函数自带的实参

2、apply() 方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apply() 方法的第一个参数是指定的对象,方法的原参数,统一放在第二个数组参数中。
(1)第一个参数:传入该函数this执行的对象,传入什么强制指向什么;
(2)第二个参数开始:将原函数的参数放在一个数组中

用法: 函数名.apply()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串apply
    console.log(a + b);
}
//使用apply() 方法改变this指向,此时第一个参数是 字符串apply,那么就会指向字符串apply
fun.apply('apply', [2, 3])  // 原函数的参数要以数组的形式呈现

3、bind() 方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bind() 方法的用法和call()一样,直接运行方法,需要注意的是:bind返回新的方法,需要重新
调用
是需要自己手动调用的

用法: 函数名.bind()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串bind
    console.log(a + b);
}
//使用bind() 方法改变this指向,此时第一个参数是 字符串bind,那么就会指向字符串bind
let c = fun.bind('bind', 2, 3);
c(); // 返回新的方法,需要重新调用
// 也可以使用下面两种方法进行调用
// fun.bind('bind', 2, 3)();
// fun.bind('bind')(2, 3);

本文系转载,前往查看

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

本文系转载,前往查看

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

评论
登录后参与评论
暂无评论
推荐阅读
【easypoi导出实例】
疫情严重,隔离在家,不出门既是爱国,抽出一个项目中使用的easypoi导出代码,请大家指教。
用户5640963
2020/02/25
1.7K0
Easypoi解析FTP服务器的Excel文件
Easypoi 解析 FTP 文件服务器指定目录下的 Excel 文件,并将解析的数据入库。
默存
2023/03/09
1.6K0
Easypoi解析FTP服务器的Excel文件
#Java 导出 excel 数据
实现根据excel模板导出数据(适合导出结构复杂的excel)根据模板导出excel适用于表格结构复杂的数据导出,需要提前定义好excel模板,设置好变量,然后导出数据到excel模板中。
ruochen
2021/12/15
3.3K0
Java实现根据excel模板
这是我业务层areaMapper.queryProvinceArea();所返回的省份数据
花落花相惜
2021/11/22
1.5K0
使用easypoi导出excel
EasyPOI是在jeecg的poi模块基础上,继续开发独立出来的,可以说是2.0版本,EasyPoi封装的目的和jeecg一致,争取让大家write less do more ,在这个思路上easypoi可以让大家几乎不写代码的情况下完成Excel的导入导出,Excel的模板导出(制作漂亮的Excel),Word模板的导出,让大家从复杂的POI的接口中解脱出来,同时更迅速的完成工作. EasyPoi的特性 •      注解是基础,让大家见名知意 •      注解是核心,让大家快速开发 •      简
二十三年蝉
2018/05/30
4.4K0
如何使用FTP中的模板文件和EasyPOI来导出Excle
因工作需要导出Excel文件,使用技术为EasyPOI,EasyPOI是一个非常好的导出文件工具,官网提供非常详细的使用文档,在项目中使用EasyPOI的模板导出功能,官方提供的示例代码中,模板的路径都是本地,我使用时也是把Excle模板文件放在本地,因为之前需要导出的地方,不是很多,模板文件放在本地也没有太大问题,但是由于现在需求变更,会有大量的模板需要导出,如果放在本地会造成项目容量变大。现在想把导出的模板保存在远程的FTP服务中,EasyPOI读取FTP的中模板文件生成Excle文件。
小码农薛尧
2021/08/09
1.6K0
SpringBoot+EasyPOI操作Excel
easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法。
默存
2022/06/17
7370
SpringBoot+EasyPOI操作Excel
JAVA 实现 FTP 文件上传、下载和删除
项目中可能经常会遇到需要文件上传到服务器上,需要的时候从服务器获取。结合之前的博客 阿里云服务器上搭载 FTP 站点 本篇博客记录:如何通过java 实现FTP文件上传下载和删除功能。虽然网上有很多教程,但是或多或少都会有些问题。看到本篇文章,也许会让你少踩坑哦~
AI码真香
2022/09/13
1.9K0
JAVA 实现 FTP 文件上传、下载和删除
使用 easypoi 导出 excel 实现动态列,完美解决!
大家好。 说明 使用的是easypoi进行导出 行头是动态生成 依据key进行列匹配,进行数据填充 第一列进行纵向动态合并 自己的一个使用,记录一下 工具依赖 <dependency>     <groupId>cn.afterturn</groupId>    <artifactId>easypoi-base</artifactId>    <version>3.2.0</version> </dependency> <dependency>     <groupId>cn.afterturn</gro
java思维导图
2022/05/19
4.3K0
使用 easypoi 导出 excel 实现动态列,完美解决!
【springboot+easypoi】一行代码搞定简单的word导出
之前写过一篇《一行代码搞定Excel导入导出》,有需要的童鞋可以回头看一下,今天简单说一下怎么一行代码实现简单的word导出。有的童鞋不太同意了,扯淡呢一行代码。你说的对,不是一行,但是封装后每次调用的时候再看是什么情况。^^_^^ 1、像之前一样的引入easypoi的pom <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId>
小尘哥
2018/08/15
7.2K0
【springboot+easypoi】一行代码搞定简单的word导出
EasyPoi导出Excel
这几天一直在忙工作中的事情,在工作中有一个问题,可能是因为刚开始接触这个EasyPoi,对其也没有太多的理解,在项目中就使用了,有一个需求,是要导出项目中所有的表格,今天就对这个需求进行分析和实现吧;
彼岸舞
2020/09/30
2.7K1
【springboot+easypoi】导出多个sheet页
对,没有错,又是我,又是easyPOI,又是excel导出。每个程序猿都听说技术是为业务服务的,那么···当需求变了之后我们能做什么呢?
小尘哥
2020/07/17
2.2K0
easypoi结合spring-boot 快速使用
此处注意必须要有空构造函数,否则会报错“对象创建错误” 关于注解@Excel,其他还有@ExcelCollection,@ExcelEntity ,@ExcelIgnore,@ExcelTarget等,此处我们用不到,可以去官方查看更多
吟风者
2019/07/25
2.7K0
easypoi结合spring-boot 快速使用
使用 EasyPOI 优雅导出Excel模板数据(含图片)
来源 | blog.csdn.net/u012441819/article/details/96828044
程序猿DD
2020/09/24
8.9K0
使用 EasyPOI 优雅导出Excel模板数据(含图片)
EasyPOI实现Word多页导出
🤞EasyPOI实现Word多页导出:按照指定模板根据List数据导出多页Word🤞 先看案例 模板:
知识浅谈
2024/05/25
8920
EasyPOI实现Word多页导出
SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」
上一篇文章中简单介绍了Poi的使用方式,但是用Poi去写代码着实繁琐了一些,假如你要实现的是复杂的需求,譬如:图片导出,多表数据导出,模板导出,大数据量导出等等,用最原生的Poi就不是很好的选择了。
鹿老师的Java笔记
2020/03/28
2.7K0
ftp工具类:上传与下载文件
linux服务器搭建ftp服务: https://program.blog.csdn.net/article/details/88825921
全栈程序员站长
2022/08/26
3.9K0
java实用工具类——使用java代码实现ftp上传下载工具类
小编最近忙着学习项目构架上的一些技术,把实用的工具类整理下,单独放在一个项目。其他项目需要用直接使用maven依赖一下就可以使用了。项目中需要实现上传多张图片,由于多张图片,又担心并发量大。所以小编做了一个负载均衡,把上传后的图片保存到linux上的ftp中去,不了解linux上的ftp小编后期编写个教程。
全栈程序员站长
2022/08/12
2.2K0
EasyExcel处理Mysql百万数据的导入导出案例,秒级效率,拿来即用!
今天终于更新新专栏 《EfficientFarm》 的第二篇博文啦,本文主要来记录一下对于EasyExcel的高效应用,包括对MySQL数据库百万级数据量的导入与导出操作,以及性能的优化(争取做到秒级性能!)。
JavaBuild
2024/05/27
8080
EasyExcel处理Mysql百万数据的导入导出案例,秒级效率,拿来即用!
模板导出Excel
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161514.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
1.1K0
模板导出Excel
相关推荐
【easypoi导出实例】
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 一、this指向
    • 以下几种情况,this都是指向window
      • 1、全局作用下,this指向的是window
      • 2、函数独立调用时,函数内部的this也指向window
      • 3、被嵌套的函数独立调用时,this默认指向了window
      • 4、自调执行函数(立即执行)中内部的this也是指向window
  • 二、改变this指向
    • 1、call() 方法
    • 2、apply() 方法
    • 3、bind() 方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档