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 方法。
添加回答
举报
0/150
提交
取消