为了账号安全,请及时绑定邮箱和手机立即绑定

JS对象直接量里面的this问题

JS对象直接量里面的this问题

梵蒂冈之花 2018-12-06 15:44:20
StartFragment var b={a:12,c:a};alert(b.c)我知道这样写是不对的,但是如果我这样写 var b={a:12,c:this.a};alert(b.c)为什么也是不对?这里的this指的是什么?或者我这样写,b={a:12,c:b.a};alert(b.c)为什么也是不对的。有没有大侠愿意帮忙解释下,谢谢。
查看完整描述

5 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

一,你知道的就不说了;

二,首先让你看看JSON的正确写法,如下

var obj={
    "A":12,
    "B":10 
};

也就是说类似“A”,“B”是需要有引号(当然没有引号也可以运行)。但是我觉得如果一接触json就是这种写法,那么今天你就不会有这样的疑问了。

接着说你写的第二个例子,这里this指的是window对象,所以A是undefined。

三,从语法上就是错的。

查看完整回答
反对 回复 2018-12-24
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

这边的this 其实是window,全局中没有定义a,所以你的第2个语句显示的是undefined

查看完整回答
反对 回复 2018-12-24
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

同一楼,c要引用a只能作为函数在里面引用:

var b={a:12,c:function(){return this.a;}};

b.c();

this是指向代码调用/执行者,上面this指向b所以能取到b的a。

你而的代码执行者是window所以this也是window。

查看完整回答
反对 回复 2018-12-24
  • 5 回答
  • 0 关注
  • 513 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号