<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>