事件驱动的JScript面对象编程(3)

2008-02-23 07:47:01来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Javascript所有对象的属性的获取

下一篇:用javascript将数据导入Excel