function cla(){ 
var _cla = this;
this.div=document.createElement("div");  this.getComponent=function(){ 
this.div.onclick=_cla.clickDiv;//因为这里的this指的是this.div  return this.div;   
}  this.clickDiv=function(){ 
   //do something 

}

解决方案 »

  1.   

    LZ:有几个问题你没太表述清楚,1、this.getComponent由谁调用?是new cla()产生的对象还是事件回调。如果是后者,楼上的应该可以解决啦。如果是前者,问题就不在this.getComponent方法,而是在this.clickDiv的内部,很有可能是this.clickDiv内部的this的指向问题。在事件回调方法中,this指向的是引发该事件的元素,也就是this.div。
    解决方案是:this.div.onclick=this.clickDiv.apply(this);
    看看这篇文章,也许有帮助。
      

  2.   

    感谢,this.getComponent()应该是由new cla()产生的对象调用。
    另外,请问下this.div.onclick=this.clickDiv.apply(this); 这段语句是什么意思,apply是什么,该怎么用啊
      

  3.   

    javascript对apply的解释是:使用指定对象替换当前对象并调用函数。比如:
                
                 
                
                function test_apply(){
                
                  alert(this);
                
                }
                
                test_apply.apply(document, []);
                
                 
                
                就表示调用函数test_apply,并用document对象来替换test_apply中的this。不知道你能明白这个没
      

  4.   

    关于apply()方法的
    应用某一对象的一个方法,用另一个对象替换当前对象。
                apply([thisObj[,argArray]])参数thisObj可选项。将被用作当前对象的对象。
                argArray
                可选项。将被传递给该函数的参数数组。
                说明
                如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
                
                
               
      

  5.   

    恩,大概明白了,THANK YOU