javascript的this指向的是一个函数运行时动态绑定对象。
this的4种常见的指向:
作为对象的方法调用
var obj={ name:"姚小白", getName:function(){ console.log(this === obj); console.log(this.name) } } obj.getName(); //true //姚小白
函数被作为一个对象调用,所以this的指向了obj对象。
作为普通函数调用
在普通函数中,this指向的全局对象,也就是window对象。
var name = "姚小白"; var getName = function(){ return this.name; } console.log(getName()) //姚小白
var name = "姚小白"; var obj = { name:"July", getName:function(){ return this.name; } } console.log(obj.getName()) //July var name1 = obj.getName; console.log(name1()) //姚小白 console.log(obj.name) //July console.log(this.name) //姚小白
在这个函数中,因为函数作用域的关系。当我们打印obj.getName();的时候,function(){return this.name;} //July
而在外层时候调用的则是 //姚小白
在一些事件函数内部,如果还有一个普通函数调用。在那个函数内部会出现this指向window。所以建议在事件内部中的函数建议先将变量定义保存,如(var _this = this)
在ES5的严格模式(use strict)中this不会指向全局对象,返回的是undefined;