var foo = 1;
function main(){
alert(foo);
var foo = 2;
alert(this.foo);
this.foo = 3;
}
var m1 = main(); //undefined 1
var m2 = new main(); // undefined undefined
var m1 = main();
//相当于是:
var foo = 1;
function main(){
var foo;
alert(foo); // 这里foo就是上一行的foo, 所以是undefined
var foo = 2;
alert(this.foo); // 这里的this 是window, 所以结果就是window.foo, 就是上面的1
this.foo = 3; // 这里的this还是window, 结果是修改了window.foo
}
var m2 = new main();
//相当于是:
var foo = 1;
function main(){
// 通过 new main()调用时, 内部的this会指向新创建的对象, 默认是空对象
alert(foo); // 这里的foo相当于是this.foo, 是undefined
var foo = 2; // 这是个局部变量, 如果是 this.foo = 2, 那么下面一行就是2了
alert(this.foo); // this是空对象, 还是undefined
this.foo = 3; // 这里给this.foo赋值, this = {foo: 3};
}