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

关于javascript作用域的一个问题?

关于javascript作用域的一个问题?

慕盖茨0887536 2017-05-18 22:36:19
function p(){ var a=2 this.run=function(){console.log(a)} }; var b=new p()b.run()b.run()能正常输出a是2。可是a不是只属于p的一个变量吗,为何能访问到?
查看完整描述

2 回答

?
qq_冲哥_0

TA贡献40条经验 获得超30个赞

当执行run 方法的时候,它执行的是console.log(a), 它会去寻找a, 首先是在当前作用域中,就是函数p 中,函数p 中你声明了一个变量a,且值为此, 它就是找的这个变量,console.log(a) 和var a =2, 是在同一个作用域中,它当然可以访问了。


var b = new p()  当执行new  操作的时候,它会生成一个新对象,并且 函数p 中的this 就指向这个对象,所以生成的对象有一个run 方法,但是没有a 这个属性,我们又把这个对象赋值给b ,  b 也就有了run 方法。

查看完整回答
反对 回复 2017-05-20
  • 2 回答
  • 1 关注
  • 1157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信