Created
December 27, 2013 02:11
-
-
Save lyuehh/8141543 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment