js this指向

<button id="bt" name="bt001">click me</button>
<script type="text/javascript">
var name="somebody";
var btn=document.getElementById("bt");
var co={
	name:"co",
	say:function(){
		alert("I am "+this.name);
	}
};
//co.say();                                                 //co
//setTimeout(co.say,1000);                                  //somebody
//setInterval(co.say,1000);                                 //somebody
//setTimeout(function(){co.say()},1000);                    //co
//setInterval(function(){co.say()},1000);                   //co
//btn.onclick=co.say;                                       //bt001 
//btn.onclick=function(){
//	co.say();                                               //co
//}

//setTimeout(function(){alert(this==window)},1000);         //true
//btn.onclick=function(){                                   //true
//	alert(this==btn);
//}
//setTimeout, setInterval, DomNode.onXXX改变的都是直接调用的函数里的this的指向
//其中,setTimeout和setInterval将直接调用的函数里的this指向window,DomNode.onXXX将this指向DomNode
//使用匿名函数将处理函数封装起来,可以将处理函数由直接调用变成通过匿名函数间接调用。

//还可以通过call和apply来改变处理函数的this指向
//co.say.call(btn);                                         //bt001
//setTimeout(function(){co.say.call(btn)},1000);            //bt001
//btn.onclick=function(){                                   //bt001
//	co.say.call(this);
//}
//setTimeout(function(){co.say.apply(btn)},1000);           //bt001
</script>

  

posted @ 2012-03-01 12:40  码农13  阅读(156)  评论(0编辑  收藏  举报