事件驱动的JScript面对象编程(3)
2008-02-23 07:47:01来源:互联网 阅读 ()
element</p>你会发现这个脚本是不能工作的。为什么??当你用方法一书写时,实际上这时onclick的处理事件是这样的:
function anonymous() { fun(this) }
也就是说IE为onclick事件创造了一个匿名函数,并在函数中调用了fun函数。由于调用anonymous的是对象text,所以this就把text的引用传给了fun函数。这时fun中的形参obj就指向text。如果您把事件绑定写成:
<p id="text" onclick="fun()">element</p>
则由于调用fun()的是函数anonymous而不是对象text,所以如果您在fun中使用this的话,这里this是不指向任何地方的。如果您alter(this)的话,您会发现他的值是undefined。
在方法二中,onclick的处理事件就是fun,所以this是可用的,它指向text。但您千万不要把方法二中fun的定义写成:
function fun(obj){
alert(obj.innerText);
}
当text响应onclick事件调用onclick时是不传递任何参数给fun的,这时obj就是undefined了。
问题已经明确,但当我们要响应HTML的事件,而处理的信息又是存在于对象中时又该怎么办呢?(当然处理方法是基于纯事件驱动的)
我们可以这样:
<p id="text">click this</p>
<script language="jscript">
function obj(){
this.innerText = "this is obj";
}
function obj.prototype.fun(){
var self = this.obj; //得到obj1的引用。学过Delphi的都知道self是什么意思
//JScript中this是不能重新赋值的,所以用self。学过Delphi的人都知道self是什么意思
alert(self.innerText);
}
var obj1 = new obj
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
