代码如下,点击test1后,显示undefined,何故?function testclass () {
this.a=1;
document.getElementById('test').attachEvent("onclick",this.show);
}
testclass.prototype.show=function () {
alert(this.a);
}
ab=new testclass();

解决方案 »

  1.   

    因为这个testclass.prototype.show=function () {
    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>
      

  2.   

    水平真有限只能这样帮你改
    <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)
      

  3.   

    这样改的话就失去意义了,因为那个a已经不是原来类里那个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。
      

  4.   

    重新写了一个,我也感觉不太好,最近也在学js,还是请别的高手来吧
    <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>
      

  5.   

    你不想那个alert(this.a)这个this变成window,那么有个技巧就是先用一个self变量 把原来的this保存
      

  6.   

    你的可以改成这样
    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();