来自:http://www.macji.com/2009/01/18/javascript-this-keyword-tips/
this指向当前作用域的对象,如果找不到,往上一层找,直到window。
this 关键字很好用,很灵活,正因为很灵活,所以一不小心你就会掉进陷阱,所以你要注意以下几点:
1. 元素对象的this,始终指向该元素,如事件绑定。
2. 全局的this或者window的相关方法的this始终指向window对象,如setTimeout(function(){alert(this);}, 10)。
3. 自己创建的对象({}, new function等)里的this指向自己对象,如var obj = {xxx: function(){alert(this);}}
4. 匿名函数的this,始终指向window对象,如(function(){alert(this);})();
5. 想不到还有什么了,望达人补充。
遇到在某function里不能正常使用this时,可以用call或者在其正常的作用域里var _this = this;然后用_this,最鹾的就是直接用对象名来调用。
另给自己定义的对象都应该创建一个属于该对象的 toString方法。
this指向当前作用域的对象,如果找不到,往上一层找,直到window。
this 关键字很好用,很灵活,正因为很灵活,所以一不小心你就会掉进陷阱,所以你要注意以下几点:
1. 元素对象的this,始终指向该元素,如事件绑定。
2. 全局的this或者window的相关方法的this始终指向window对象,如setTimeout(function(){alert(this);}, 10)。
3. 自己创建的对象({}, new function等)里的this指向自己对象,如var obj = {xxx: function(){alert(this);}}
4. 匿名函数的this,始终指向window对象,如(function(){alert(this);})();
5. 想不到还有什么了,望达人补充。
遇到在某function里不能正常使用this时,可以用call或者在其正常的作用域里var _this = this;然后用_this,最鹾的就是直接用对象名来调用。
另给自己定义的对象都应该创建一个属于该对象的 toString方法。