var x = 1; function f(){ // alert(x); var x = 2; alert(this.x); x = 3; } a = f(); b= new f();
a=f() 这句执行时,函数里的 this 等价于 window,也就是window.x,所以弹出 结果为1
b=new f()会生成一个函数实例,this指向当前实例,由于f没有x属性,所以值为 undefined
如果在函数中加一句 this.x=8,则,
对于 a=f() 来说,相当于修改 x=1的值 x=8
对于 b=new f()来说,相当于函数实例的属性x=8
所以他们都会弹出8
时间: 2024-10-12 22:45:58