本帖最后由 humanblue 于 2010-03-09 21:34:37 编辑

解决方案 »

  1.   


    alert(this[i])  != alert(this)
      

  2.   

    这两个self代表的都是aaa类,至于你后面alert(this[i])这个输出的只是这个aaa类里的属性,所以当然输出的就只有是
    aaa.prototype._doTab = function (t) { 
    for (var i in t) { 
    alert(this[i]); 


    这个喽
      

  3.   

    非常感谢您,我理解了,还有个小问题var aaa = function() { 
    var self = this; 
    var a = 2; 
    for (var i = 0; i < document.getElementsByTagName('a').length; i++){ 
    document.getElementsByTagName('a')[i]['onmouseover'] = function(){ 
    self._doTab(self); 


    } 为什么这里要用self=this,用self去调取这个aaa类,为什么不能直接把self._doTab(self)改成this._doTab(this),我测试了,如果改成this._doTab这里的this指的是a元素了,那实际上就是var self=this这句起了很关键的作用,您看我理解对不对,就是在给某元素加事件的时候,必须通过外部一个变量才能取到外面的this,例如self=this?
      

  4.   

    首先,两个 self  只的是同一个东西, 是 aaa 这个对象。------------------------------------------------Q:我alert时候很明显是输出的aaa._doTab这个方法A:原因在_doTab这个方法的内部,function (t) { 
    for (var i in t) { 
    alert(this[i]); 


    这个 for 循环做的事情是 alert 出 传进来的参数的全部属性,当前对象 就是 aaa 就一个属性 _doTab
    for (var i in t) { 
    alert(this[i]); 
    } 所以输出的就是 _doTab 的内容
    --------------------------------
    var a = 2; 
    =>
    this.a = 2; 就可以看到区别了