老师,为什么数组c里变量a的值是6而不是obj里的5

老师,为什么数组c里变量a的值是6而不是obj里的5

老师,为什么数组c里变量a的值是6而不是obj里的5

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

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

2回答
好帮手慕夭夭 2020-12-20 17:43:05

@SuperVivian  同学你好,这样是不可以的。具体原因如下:

1、数组中的this指向的是window,可以输出一下:

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

因为只有函数才会形成一个局部作用域,这里的数组c是全局下的,所以this指向window:

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

所以这里使用this获取的a是全局属性a,全局变量相当于全局属性,所以获取的依旧是全局变量a

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

如下:

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

2、如果想要获取对象中的a,那么直接通过对象名.属性名的格式获取。示例:

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

3、因为教学服务到期之后,其他人的问答是无法查看的,只能查看自己的提问。如果同学有疑惑,建议自己创建问题,便于同学日后的复习。

祝学习愉快~


  • 明白啦!谢谢老师的耐心解答~之后我会自己创建问题

    2020-12-21 13:27:26
好帮手慕夭夭 2020-09-12 15:53:51

同学你好,因为obj中的a是一个属性,属性是没有办法直接通过属性名拿到的,需要通过“对象.属性名”才可以拿到,单独写一个a就表示变量,拿到就是变量值6。

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

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 请问如果希望输出obj里的a,是这样写吗?


    var obj = {

        ​a:5,

        ​b:2,

        ​c:[1,this.a,

            ​function( ){ document.write(this[1]); }

    }

    2020-12-20 16:59:17
  • 老师在上面回复了哦

    2020-12-20 17:45:48
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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