老师,视频中说到这个this的指向是window,

老师,视频中说到这个this的指向是window,

这里我访问this.age是没有问题的哩。这是什么原因?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

</head>


<body>

    <script type="text/javascript">

    // 补充代码

   let xiaoming={

    age:18,

    sex:'male',

    getAge:function(){setTimeout(()=>{console.log(this)},1000)

   },

   }

   xiaoming.getAge()

   

    </script>

</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
卡布琦诺 2018-12-24 18:05:41

同学你好。首先,这里的this不是指向window的(注意这里是箭头函数)。箭头函数没有自己的this,箭头函数的this指向的是当前函数创建时的环境变量的this,这里箭头函数的this指向的是getAge:funcetio(){……}的this,getAge:function(){……}的this指向的是xiaoming这个对象的this。所以这里是可以访问到age的

http://img1.sycdn.imooc.com//climg/5c20af220001372909620488.jpg

希望可以帮到你!

  • 箭头函数不是在setTimeout函数的形式参数里面被创建的吗?那为什么它的函数不是setTimeout呢?setTimeout函数的环境变量不是window环境吗?所以不是应该还是指向的window对象吗?
    2019-08-23 21:00:33
  • ES6箭头函数this指向需要注意的点是:函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。this对象的指向是可变的,但是在箭头函数中,它是固定的,setTimeout的参数是一个箭头函数,这个箭头函数定义生效是在getAge函数生成时,而它的真正执行要等到1000毫秒后,如果是普通函数,执行时this应该指向全局对象window,但是,箭头函数导致this总是指向函数定义生效时所在的对象,所以这里指向的是xiaoming
    2019-08-24 10:15:32
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
热门框架Vue开发WebApp 18版
  • 参与学习           人
  • 提交作业       209    份
  • 解答问题       3299    个

本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师