看了zkybeyond的BLOG里的一篇留言,有這么一段代碼:
var myObj=new Object();
myObj.message="hello world";
myObj.fun=function(){
alert (this.message);
}
window.onload=myObj.fun;
頁面打開時顯示什么?hello world?
不對,是undefined!!
?
暈不暈?反正當我真正開始在js中運用OO概念進行編程的時候發現,this所指代的對象竟然和直覺不一致。后來查資料知道,在html事件響應函數中的this都會被替換成觸發事件的那個Element!!(這種說法不太嚴謹,不過意思可以理解,,嘻嘻)所以window.onload的時候調用的fun已經不是myObj的fun了。?
?改一下代碼:
<script language="JavaScript">
<!--
var myObj= {};
myObj.message="hello world";
myObj.fun=function(){
?alert (this.fun);
}
window.fun = "test";
window.onload=myObj.fun;
//-->
</script>
。。。有點暈吧