this对象是什么:
this对象是与运行时函数执行的上下文绑定的。这句话其实已经很好的解释了this对象,为我们确定this指明了方向!但是需要注意的是:由于javascript具有动态性(解释执行,当然也有简单的预编译过程),this对象只有运行时才能够确定!
确定this对象的方法:
当函数为全局函数时,this指向window;当函数作为某个对象的方法被调用时,this指向那个对象。特别需要注意的是,在非严格模式下匿名函数的执行上下文具有全局性,其中的this指向window,而严格模式this为空。
案例:
看不懂没有关系,下面讲解一下实例:
1.先来点简单的
/*全局当中的this*/ console.log(this); //window /*全局函数中的this*/ function fn(){ console.log(this); //window } fn(); /*对象当中方法的this*/ var obj = { name : '复读机', getThis : function(){ console.log(this); } }
obj.getThis()//obj 此函数作为obj的方法被调用
var getThis1 = obj.getThis;
getThis1();//window 此函数不是作为obj方法被调用,可以看做是全局函数
2.闭包与this
/*闭包与this*/ var obj = { name : '复读机', getThis : function(){ return function(){ console.log(this); //window } } } obj.getThis()();
还是简单解释一下:在这个例子中this的指向为运行时this所在的执行上下文,很明显this的上下文为一个匿名函数,这个匿名函数不是属于obj的方法,它具有全局性,所以this指向window
3.类与this
/*类与this*/ function CreateDog(name,age){ this.name = name; this.age = age; console.log(this); //指向实例 } CreateDog.prototype.sayThis = function(){ console.log(this); //指向实例 } var dog = new CreateDog("xiaohei",1); dog.sayThis();
很多人误认为this指向类,然而this指向实例,这一点是毋庸置疑滴!
最后,关于this的有很多,需要在实践中慢慢体会!