代码如下,点击test1后,显示undefined,何故?function testclass () {
this.a=1;
document.getElementById('test').attachEvent("onclick",this.show);
}
testclass.prototype.show=function () {
alert(this.a);
}
ab=new testclass();
this.a=1;
document.getElementById('test').attachEvent("onclick",this.show);
}
testclass.prototype.show=function () {
alert(this.a);
}
ab=new testclass();
alert(this.a);你写在了类的外面了,所以alert(this.a)的这个this指的是window这个对象但是你并没有在window对象定义一个变量所以错了,
改成这样你就知道了
<input type="button" id="test" value="单击我" />
<script language="javascript" type="text/javascript">
var a="哈哈这个是window的一个变量";
function testclass () {
this.a=1;
document.getElementById('test').attachEvent("onclick",this.show);
}
testclass.prototype.show=function () {
alert(this.a);
}
ab=new testclass();</script>
<script language="javascript" type="text/javascript">function testclass () {
this.a=1;
document.getElementById('test').attachEvent("onclick",this.show);
}
testclass.prototype.show=function () {
alert(new testclass().a);
}
ab=new testclass();</script>
就是改了你的alert(this.a)
比如说这样:function testclass (i) {
this.a=i;
document.getElementById('test').attachEvent("onclick",this.show);
}
testclass.prototype.show=function () {
alert(new testclass().a);
}
ab=new testclass(1);
abc1=new testclass(2);ab要显示1,abc1要显示2。
<script language="javascript" type="text/javascript">function testclass(i)
{
this.a=i;
var self=this;
this.show=function(){alert(self.a)};
this.onAddEvent=function(){};
}
function addEvent(sender)
{
document.getElementById("test").attachEvent("onclick",sender)
}
obj1=new testclass(1);
//obj1.show();
obj1.onAddEvent=addEvent(obj1.show);</script>
function testclass () {
var me=this;
this.a=1;
document.getElementById('test').attachEvent("onclick",this.show);
}
testclass.prototype.show=function () {
alert(me.a);
}
ab=new testclass();