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";
}

 

posted @ 2017-03-09 20:04  念念念不忘  阅读(159)  评论(0)    收藏  举报