看了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>
。。。有点晕吧