this其实就是指当前这个方法或者属性属于的对象。
1、如果直接是var fun = function(){statement},那么这个函数体属于window这个对象的。因此this==window
2、如果使用了var fun = new FunctionName(),那么此时this,就是由构造函数FunctionName生成的对象,上例子:
window.a = "hello world"; var fun =function(){ alert(this.a); }; var o = { a : "fucking world" }; fun();//第一条 fun.call(window);//这里把window对象赋值给函数中的this,此时this即为window。 window.fun();//这里利用window对象去调用属于window对象的函数,这里的this当然就是window(第一条)。 fun.call(o);//这里把o对象赋值到函数中的this,此时this即为o。 o.fun(); //会报错,因为o对象并没有一个叫fun的方法。
我想只要调试了这个例子,this是什么应该算会清楚一些吧。