当前位置: 首页 > news >正文

箭头函数的this指向谁

先看1个重要原则:

        由Vue管理的函数,一定不要写箭头函数,箭头函数的this就不再是Vue实例了

箭头函数的 this 指向在定义时确定,继承自外层作用域(即定义时的上下文)的 this,且无法通过 callapply  或  bind 改变。以下是关键点总结:

1. 词法作用域的 this

  • 箭头函数没有自己的 this,它使用外层非箭头函数作用域的 this 值。若外层没有函数,则指向全局对象(如 window 或 global)。

  • 示例

    const obj = {value: 42,getValue: function() {// 普通函数中的 this 指向 objconst arrowFn = () => this.value;return arrowFn();}
    };
    console.log(obj.getValue()); // 输出 42

    2. 与普通函数的区别

  • 普通函数this 由调用方式决定(如对象方法、构造函数、事件监听等)。

  • 箭头函数this 固定为定义时的外层 this

  • 示例对比

    // 普通函数(this 指向调用者)
    const obj1 = {value: 10,fn: function() { console.log(this.value); }
    };
    setTimeout(obj1.fn, 100); // 输出 undefined(this 指向全局)// 箭头函数(this 继承外层)
    const obj2 = {value: 10,fn: function() {setTimeout(() => console.log(this.value), 100); // 继承外层 this(obj2)}
    };
    obj2.fn(); // 输出 10

    3. 无法通过绑定方法修改

  • 使用 callapply 或 bind 无法改变箭头函数的 this

  • 示例

    const outerThis = { name: "Outer" };
    const arrowFn = () => console.log(this.name);
    arrowFn.call({ name: "New" }); // 输出 "Outer"(若外层 this 指向全局则可能输出 undefined)

    4. 对象字面量中的陷阱

  • 对象字面量不创建作用域,内部箭头函数的 this 指向全局。

  • 示例

    const obj = {value: "Hello",getValue: () => console.log(this.value) // this 指向全局(如 window)
    };
    obj.getValue(); // 输出 undefined(假设外层为全局)

    5. 在构造函数中的行为

  • 箭头函数作为构造函数会报错(不能 new)。

  • 但若在构造函数内定义,箭头函数会继承实例的 this

    function Person() {this.age = 0;setInterval(() => {this.age++; // this 指向 Person 的实例}, 1000);
    }
    const p = new Person(); // age 每秒自增

    6.总结

  • 箭头函数的 this:继承自定义时的外层作用域,且不可更改。

  • 使用场景:需要固定 this 时(如回调、事件处理、setTimeout)。

  • 避免场景:需要动态 this 时(如对象方法、构造函数)。

通过理解箭头函数的词法 this 特性,可以更灵活地控制代码中的上下文绑定。

    相关文章:

    箭头函数的this指向谁

    先看1个重要原则: 由Vue管理的函数,一定不要写箭头函数,箭头函数的this就不再是Vue实例了 箭头函数的 this 指向在定义时确定,继承自外层作用域(即定义时的上下文)的 this,且无法通过 call、app…...

    【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理

    标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

    【Python】01-基础

    目录 1、命令行简介1.1 命令行结构1.2 常用dos指令 2、环境变量2.1 查看2.2 添加2.3 修改2.4 删除 3、path环境变量4、进制5、文本文件和字符集6、Sublime使用 1、命令行简介 命令行就是文本交互页面,通过命令行可以使用指令来操作计算机 1.1 命令行结构 版本及版…...

    Java-DFS(深度优先搜索)

    原理 深度优先搜索的基本思路是从一个节点开始,依次访问它的每一个邻居节点,直到达到一个没有未被访问的邻居的节点为止。这个过程可以使用递归或者栈来实现。其特点是尽可能深入每一个分支,然后再回溯。 DFS算法常用于解决以下类型的问题&…...

    AI大模型编程能力对比:DeepseekClaudeGemini

    在当今快速发展的技术领域,人工智能(AI)模型在编程和数据处理方面的应用越来越广泛。不同的AI模型因其独特的设计理念和技术优势,适用于不同的编程任务和场景。 本文将对三种主流的AI模型——DeepSeek v3、Gemini Flash 2.0 和 C…...

    用C++实现点到三角形最小距离的计算

    1、全部代码 #include <iostream> #include <cmath> #include <array> #include <algorithm>// 二维点结构体 struct Point2D {double x, y;Point2D(double x 0, double y 0) : x(x), y(y) {} };// 计算点到线段的最小距离 double pointToSegmen…...

    解决前后端日期传输因时区差异导致日期少一天的问题

    前端处理 1. 发送日期字符串而非时间戳 在前端使用日期选择器&#xff08;如 el-date-picker&#xff09;获取日期后&#xff0c;将日期转换为特定格式的字符串&#xff08;如 YYYY-MM-DD&#xff09;发送给后端&#xff0c;避免直接发送带有时区信息的时间戳或日期对象。这样…...

    mmsegmentation自己的数据集+不同网络的config配对

    比如说我们要用这个网络&#xff1a; 我们发现他内部继承了很多类&#xff0c;要想配对我们的数据集&#xff0c;就要进行父类的修改。 ../_base_/models/deeplabv3_unet_s5-d16.py, ../_base_/datasets/drive.py,../_base_/default_runtime.py, ../_base_/schedules/schedule…...

    Golang官方编程指南

    文章目录 1. Golang 官方编程指南2. Golang 标准库API文档 1. Golang 官方编程指南 Golang 官方网站&#xff1a;https://go.dev/ 点击下一步&#xff0c;查看官方手册怎么用 https://tour.go-zh.org/welcome/1 手册中的内容比较简单 go语言是以包的形式化管理函数的 搜索包名…...

    ram的使用——初始化很重要

    背景 ram是非常常用的ip&#xff0c;前人的经验告诉我们&#xff0c;如果不对ram进行初始化直接读写&#xff0c;不定态在实际上板时会出现不可预知的问题。 我们需要对ram进行初始化写0操作&#xff0c;代码如下。需要注意&#xff0c;复位释放时立马写入可能存在复位抖动的…...

    doris:最佳实践

    异步物化视图使用原则​ 时效性考虑&#xff1a; 异步物化视图通常用于对数据时效性要求不高的场景&#xff0c;一般是 T1 的数据。如果时效性要求高&#xff0c;应考虑使用同步物化视图。 加速效果与一致性考虑&#xff1a; 在查询加速场景&#xff0c;创建物化视图时&#x…...

    [创业之路-299]:图解金融体系结构

    一、金融体系结构 1.1 概述 金融体系结构是一个国家以行政的、法律的形式和运用经济规律确定的金融系统结构&#xff0c;以及构成这个系统的各种类型的银行和非银行金融机构的职能作用和相互关系。以下是对金融体系结构的详细分析&#xff1a; 1、金融体系的构成要素 现代金…...

    RL--2

    强化学习当中最难的两个点是&#xff1a; 1.reward delay&#xff1b; 2.agent的行为会影响到之后看到的东西&#xff0c;所以agent要学会探索世界&#xff1b; 关于强化学习的不同类型&#xff0c;可以分为以下三种&#xff1a; 一种是policy based&#xff1a;可以理解为它是…...

    [JVM篇]分代垃圾回收

    分代垃圾回收 分代收集法是目前大部分 JVM 所采用的方法&#xff0c;其核心思想是根据对象存活的不同生命周期将内存划分为不同的域&#xff0c;一般情况下将 GC 堆划分为老生代(Tenured/Old Generation)和新生代(Young Generation)。老生代的特点是每次垃圾回收时只有少量对象…...

    Dify本地安装

    目录 方式一docker安装&#xff1a; 方式二源码安装&#xff1a; Dify本地安装可以用docker方式&#xff0c;和源码编译方式。 先到云厂商平台申请一台Centos系统云主机&#xff0c;网络选择海外&#xff0c;需要公网IP&#xff0c;再按一下流程操作&#xff1a; 方式一doc…...

    python | 两招解决第三方库安装难点

    前言 python 被广泛应用的原因之一&#xff0c;便是拥有大量的第三方库&#xff0c;涵盖 web 开发、数据分析和机器学习等多个方面。 对于多数初学者来说&#xff0c;如何成功安装 python 第三方库成为了一大难点&#xff0c;总是因各种原因导致安装失败。 本文以自身经验&a…...

    stm32mp15x 之 M4 使用 canfd

    目录 序配置添加注坑参考 序 在使用 stm32mp15x 系列时&#xff0c;M4 有不少的坑&#xff0c;这里简单聊聊使用 canfd 时遇到的一些问题。 配置 这里使用 PLL4R 为 100M&#xff0c;用于 CANFD 的时钟 canfd 速率配置成 1M &#xff0c;5M&#xff0c;其中数据传输速率为 5M…...

    第七天:数据提取-正则表达式

    每天上午9点左右更新一到两篇文章到专栏《Python爬虫训练营》中&#xff0c;对于爬虫有兴趣的伙伴可以订阅专栏一起学习&#xff0c;完全免费。 键盘为桨&#xff0c;代码作帆。这趟为期30天左右的Python爬虫特训即将启航&#xff0c;每日解锁新海域&#xff1a;从Requests库的…...

    Python入门全攻略(六)

    文件操作 文件路径 绝对路径:D:\pythonLearing\fileOperating.exe 相对路径:./fileOperating.exe # ./表示当前目录 # ../表示上一级目录 字符编码 字符集编码说明ASCll 最早的字符编码标准之一,基于拉丁字母的字符集,一共有128个字符GBK(国际码)用于简体中文的字符编码,…...

    MongoDB副本集

    副本集架构 对于mongodb来说&#xff0c;数据库高可用是通过副本集架构实现的&#xff0c;一个副本集由一个主节点和若干个从节点所组成。 客户端通过数据库主节点写入数据后&#xff0c;由从节点进行复制同步&#xff0c;这样所有从节点都会拥有这些业务数据的副本&#xff0…...

    RK3568音频子系统深度调优:手把手教你用amixer配置RK809 Codec的音量与通路

    RK3568音频子系统深度调优&#xff1a;手把手教你用amixer配置RK809 Codec的音量与通路 在嵌入式音频开发中&#xff0c;能够精准控制音频通路和参数是区分普通开发者和资深工程师的重要能力。RK3568作为瑞芯微的主力芯片之一&#xff0c;搭配RK809 Codec提供了丰富的音频控制接…...

    [特殊字符] 躺着把文章写了:如何通过 AI 结构化工程“制造”高质量内容@围巾哥萧尘[特殊字符][特殊字符] 躺着把文章写了:如何通过 AI

    &#x1f680; 躺着把文章写了&#xff1a;如何通过 AI 结构化工程“制造”高质量内容围巾哥萧尘&#x1f9e3;1. 反常识&#xff1a;写作不是天赋&#xff0c;是工程很多人认为&#xff0c;写出一篇好文章需要过人的天赋、神来之笔的灵感&#xff0c;或者是数小时的苦思冥想。…...

    【无人机】基于无人机UAV和物联网IoT的奶牛健康监测系统算法实现附matlab代码

    ✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matla…...

    欧姆龙PLC与上位机通信实战:手把手教你用C#解析CIP协议报文(附完整代码)

    欧姆龙PLC与上位机通信实战&#xff1a;C#解析CIP协议报文全流程指南 工业自动化领域中&#xff0c;欧姆龙PLC凭借其稳定性和灵活性成为众多生产线的核心控制设备。而实现上位机与PLC的高效通信&#xff0c;则是每个自动化工程师必须掌握的技能。本文将深入探讨如何通过C#语言…...

    别再用记事本学汇编了!手把手教你用DOSBox+DEBUG玩转8086指令(附完整实验流程)

    从零构建8086汇编实验环境&#xff1a;DOSBoxDEBUG终极指南 在数字化浪潮席卷全球的今天&#xff0c;学习计算机底层原理反而成为了一种稀缺技能。当现代开发者习惯了高级语言的抽象与便利&#xff0c;那些直接与硬件对话的汇编指令仿佛成了数字世界的"拉丁语"。但正…...

    MAA明日方舟助手:终极自动化指南,告别重复劳动!

    MAA明日方舟助手&#xff1a;终极自动化指南&#xff0c;告别重复劳动&#xff01; 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地…...

    2025届毕业生推荐的五大AI写作平台横评

    Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 现而今&#xff0c;人工智能技术已深度且广泛地融入到学术写作流程里面。以开题报告这个极为…...

    避开坑点!STM32 HAL库RTC读写顺序详解与BCD/BIN格式转换实战

    STM32 HAL库RTC开发避坑指南&#xff1a;读写顺序与数据格式的实战解析 第一次在STM32上实现RTC功能时&#xff0c;我盯着屏幕上跳动的日期时间百思不得其解——明明设置了2023年&#xff0c;却显示成了1987年&#xff1b;读取的时间总比实际慢几秒。直到深夜调试才发现&#x…...

    MAA明日方舟自动化助手:5大核心功能与3步智能管理方案

    MAA明日方舟自动化助手&#xff1a;5大核心功能与3步智能管理方案 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://git…...

    荣耀闪电夺冠,人形机器人行业先发优势消失,二线厂商何去何从?

    1. 赛事爆冷&#xff1a;荣耀逆袭&#xff0c;头部失色风光无限的宇树H1机器人&#xff0c;为何在马拉松比赛中&#xff0c;被荣耀闪电机器人按在地上摩擦&#xff1f;是宇树机器人无法真正实战&#xff0c;还是人形机器人门槛太低&#xff0c;手机大厂都能轻松手搓&#xff1f…...