var x = "haha"; var test = function(){ alert(this.x); } 上述,则会弹出 haha的值. 因为在JavaScript的变量作用域里有一条规则“全局变量都是window对象的属性”. 所以当执行test();方法时,相当于执行window.test(); 所以test方法中的this相当于指向了window对象,而window对象又有x变量. 即:this所在的函数是当作哪个方法的对象所调用的,即该对象就是this所引用的对象. 参
双重角色 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象有双重角色,它既是通过Javascript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象.这意味着在网页中定义的任何一个对象.变量和函数,都以window作为其Global对象. 全局作用域 [1]在全局作用域中声明的变量.函数都会变成window对象的属性和方法 var age = 29; function sayAge(){ console.log(this.age); }
ECMAScript虽然没有指出如何直接访问Global对象,但web浏览器都是将这个全局对象作为window对象的一部分加以实现的.因此,在全局作用域中声明的所有变量和函数,就都成为了window对象的属性.例如: var color = "red"; function sayColor() { alert(window.color); } window.sayColor();//red 这里定义了一个名为color的全局变量和一个名为sayColor()的全局函数.在sayColo