返回顶部
首页 > 资讯 > 精选 >JS箭头函数的this指向分析
  • 699
分享到

JS箭头函数的this指向分析

2023-06-25 14:06:13 699人浏览 安东尼
摘要

本篇内容介绍了“js箭头函数的this指向分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!箭头函数是es6中的新增特性,他没有自己的thi

本篇内容介绍了“js箭头函数的this指向分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

箭头函数是es6中的新增特性,他没有自己的this,其this指向从外层代码库继承。

使用箭头函数时要注意一下几点:

  • 箭头函数不能用作构造函数,用的话会抛出一个错误

  • 无法使用arguments参数,如果要用的话就用rest

  • 无法使用yield命令,所以箭头函数无法用作Generator函数

  • 因为没有自己的this,所以没法通过bind、call、apply来改变this指向

  • 但是这不代表箭头函数的this指向是静态的,我们可以通过改变它外层代码库的this指向来控制

  • 箭头函数的this从外层代码库继承,所以箭头函数的this是在定义的时候就绑定好了的,而普通函数是在调用的时候确定this指向

  • 字面量对象中直接定义的箭头函数的this不绑定该对象,而是往外找一层,最简单的情况是绑定到window

PS: 实际开发环境中,React可以使用箭头函数解决一个经典问题,这里不细说了。

给一个例子看一下箭头函数的实际情况:

const obj = {  fun1: function () {    console.log(this);    return () => {      console.log(this);    }  },  fun2: function () {    return function () {      console.log(this);      return () => {        console.log(this);      }    }  },  fun3: () => {    console.log(this);  }}let f1 = obj.fun1(); // objf1() // objlet f2 = obj.fun2();let f2_2 = f2(); // windowf2_2() // windowobj.fun3(); // window

针对每行输出的分析:

let f1 = obj.fun1() // obj

这里明显进行的是隐式绑定,fun1的this指向obj

f1() // obj

这里执行了上一行返回出来的箭头函数,我们分析上一层代码库的this指向obj,所以直接继承,箭头函数this指向

objlet f2 =obj.fun2()

fun2第一层执行的时候没有打印代码,而是返回了一个函数出来,赋值给f2,并且这里发生了绑定丢失,this指向由原来的obj指向了window(发生了赋值)

let f2_2 = f2() // window

f2()执行了,打印出了改绑后的this——window,然后将箭头函数返回出来,赋值给f2_2f

2_2() // window

执行打印出window,刚才的外层代码的this不是指向了window吗,所以这里就继承了window作为this

obj.fun3() // window

在字面量中直接定义的箭头函数无法继承该对象的this,而是往外再找一层,就找到了window,因为字面量对象无法形成自己的一层作用域,但是构造函数可以哦。

那我们怎么操纵箭头函数的this指向呢:

答案是修改外层代码库的this指向,在箭头函数定义之前就给this修改方向即可。

在以上代码的基础上:

let fun4 = f2.bind(obj)() // objfun4() // obj

我们发现修改的是第二层方法的this指向,并且箭头函数也继承了下来。

  fun2: function () {    return function () { // 我们修改的是这里的this      console.log(this);      return () => { // 然后这里定义的时候就继承啦        console.log(this);      }    }  },

“JS箭头函数的this指向分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: JS箭头函数的this指向分析

本文链接: https://lsjlt.com/news/305280.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JS箭头函数的this指向分析
    本篇内容介绍了“JS箭头函数的this指向分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!箭头函数是ES6中的新增特性,他没有自己的thi...
    99+
    2023-06-25
  • JS 箭头函数的this指向详解
    箭头函数是ES6中的新增特性,他没有自己的this,其this指向从外层代码库继承。 使用箭头函数时要注意一下几点: 箭头函数不能用作构造函数,用的话会抛出一个错误 ...
    99+
    2024-04-02
  • JS函数(普通函数,箭头函数)中this的指向问题详解
    目录普通函数箭头函数普通函数 具名普通函数、匿名普通函数,在不作为对象的属性值的情况下,其内部的 this 总是指向代码运行环境下的全局对象 ( 例如,浏览器中的 window )。...
    99+
    2024-04-02
  • es6箭头方法中this指向实例分析
    这篇文章主要介绍“es6箭头方法中this指向实例分析”,在日常操作中,相信很多人在es6箭头方法中this指向实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”es6箭头方法中this指向实例分析”的疑...
    99+
    2023-07-04
  • ES6箭头函数及this指向怎么使用
    这篇文章主要介绍“ES6箭头函数及this指向怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ES6箭头函数及this指向怎么使用”文章能帮助大家解决问题。1...
    99+
    2024-04-02
  • Javascript箭头函数中this的示例分析
    小编给大家分享一下Javascript箭头函数中this的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先我们先看一段...
    99+
    2024-04-02
  • ES6箭头函数中this问题的示例分析
    小编给大家分享一下ES6箭头函数中this问题的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简要介绍:箭头函数中的th...
    99+
    2024-04-02
  • es6箭头方法中this的指向是什么
    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。箭头函数相信大家在日常开发中用到的地方非常之多,因为它很简洁,可读性强,但是它最大的好处,其实是解决了匿名函数的this指向问题,有利于封装回调函数。先来...
    99+
    2022-11-22
    箭头函数 javascript ES6
  • 关于JS中的箭头函数
    更简短的函数并且不绑定this。 箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或new.target。 箭头函数表达式更适用于那些本...
    99+
    2023-05-19
    JS 函数 箭头函数
  • JavaScript箭头函数的this怎么使用
    这篇文章主要介绍“JavaScript箭头函数的this怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript箭头函数的this怎么使用”文章能...
    99+
    2024-04-02
  • js中this的指向问题归纳的示例分析
    这篇文章给大家分享的是有关js中this的指向问题归纳的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。thisthis:上下文,会根据执行环境变化而发生指向的改变.1.单...
    99+
    2024-04-02
  • 一文带你了解JS箭头函数
    【推荐学习:javascript视频教程】以上就是一文带你了解JS箭头函数的详细内容,更多请关注编程网其它相关文章!...
    99+
    2022-11-22
    javascript 箭头函数
  • JS中this在各个场景下指向的示例分析
    这篇文章主要介绍JS中this在各个场景下指向的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. this 的奥秘很多时候, JS 中的 this 对于咱们的初学者很容易产...
    99+
    2024-04-02
  • Angular.JS中this指向的示例分析
    这篇文章主要介绍了Angular.JS中this指向的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。【this详解】1、谁最终调用函...
    99+
    2024-04-02
  • JavaScript中this指向的示例分析
    小编给大家分享一下JavaScript中this指向的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!this先看代码:方法中function t...
    99+
    2023-06-25
  • JQuery中this的指向实例分析
    这篇文章主要介绍“JQuery中this的指向实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JQuery中this的指向实例分析”文章能帮助大家解决问题。JavaScript中的this不总...
    99+
    2023-06-30
  • JS什么场景不适合箭头函数
    目录概述定义对象上的方法Object literalObject prototype动态上下文的回调函数调用构造函数简写语法总结概述 这些年来,ES6 将js的可用性提升到一个新的水...
    99+
    2024-04-02
  • JavaScript之this指向实例分析
    今天小编给大家分享一下JavaScript之this指向实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。默认绑定,全局...
    99+
    2023-06-30
  • 如何改变函数的this指向
    本篇内容介绍了“如何改变函数的this指向”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 如果是函数声明...
    99+
    2024-04-02
  • Javascript中函数分类&this指向的实例详解
    JS中定义函数的三种方式 通过实例来说明吧 <script> //method1 function fn() { ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作