1. this基本上就代表的是对象 在极其少的时候 this不是对象。
在方法中,this 表示该方法所属的对象。
如果单独使用,this 表示全局对象。
this 在全局函数中代表的是window全局对象。
2. 在js程序中无论多么复杂的程序 记住this只需要看离他最近(有嵌套关系)的function这个单词的调用者。
比如:
分析:因为say函数是由数组obj调用的,所以第一个this指向的就是数组obj,因此fn(this)就等价于fn(obj),所以a打印出数组obj,fn(obj)调用函数就相当于window.fn(obj),所以第二个this指向window
3. this代表离它最近的嵌套级别的function的调用者,如果没有就是window。
obj.x()==>this是obj
obj.x1.x2()==>this是obj.x1属性引用的对象
obj.x1[2]()==>this是obj.x1属性引用的数组
obj.x1().x2()==>第一个调用this是obj 第二个调用内部的this是obj.x1()函数返回的对象
obj.fn(this)==>fn函数内部的this是obj 小括号中的this看这个单词所在的函数 是谁调用的 特别注意它跟fn函数没关系
其他情况下 一般this都是代表window
4.笔试题
分析:做这种题首先要搞清楚函数中的this指向的是谁,也就是看是谁调用的这个函数。从此题可以看出a(5)和a(6)使函数运行了,所以它们的调用者是window,因此函数中this指向的就是window。当a(5)运行,window.x=5,然后返回值为window,所以x=window。而a(6)运行,又将x赋值为6,y值为window。所以打印6.X为undefined,打印window.x就为6。