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是什么应该算会清楚一些吧。