this —— this指向
一、this指向
1、指向window
描述:最顶层的this指的就是window。只要是函数名();这样调用的,this指的就是window 。不包含带参数的情况
例子:
name();
function fn(){ alert(this); } oDiv.onclick=function(){ fn(); };
alert(this);
<input onclick=" fn(); "/>
2、指向调用对象
(1)不带参数的:
function fn(){ alert(this); } oDiv.onclick=fn; //oDiv
oDiv.onclick=function(){ alert(this); //oDiv };
(2)带参数的:(具体情况具体分析)
op.onclick=function(){ fn(this); }; function fn(obj){ alert(obj); //op }
3、不常见的
<input onclick=" alert(this) "/> 按钮input
4、setInterval()
function aaa(){ this.a=12; setInterval(this.show,1000); //这里的this指的是window }
解决办法:
function aaa(){ var _this=this; this.a=12; setInterval(function(){_this.show();},1000); //这里的this指的是this,即aaa里的this }
二、存储this变量的方法
var aBtn=document.getElementsByTagName("input"); var saveThis=null; for(var i=0;i<aBtn.length;i++){ aBtn[i].onclick=function(){ saveThis=this; fn(); } } function fn(){ saveThis.style.background="red"; }
不用存储变量,和上个例子效果相同:
var aBtn=document.getElementsByTagName("input"); for(var i=0;i<aBtn.length;i++){ aBtn[i].onclick=fn; } function fn(){ this.style.background="red"; }