var a=function(){
var self=this;
this.b=function(){
alert(this==self)//弹出true
this.c()//出错  为什么?????
}
this.b();
this.c=function(){
alert('cccc')
}
}
new a()

解决方案 »

  1.   


    var a=function(){
                    var self=this;
                    this.b=function(){
                        alert(this==self)//弹出true
                        this.c()//出错  为什么?????  因为this.c == undefined
                    }
                    this.b(); <---- 这里在this.c=func...之前执行的,此时this.c == undefined
                    this.c=function(){
                        alert('cccc')
                    }
                }
                new a()
    把this.b() 放到 this.c=func... 的后面就可以了
      

  2.   

    下面的代码怎么错了??
    var a=function(){
    var self=this;
    this.b=function(){
    alert(this==self)//弹出true
    this.loadingEditorCheck = function(){
    if (self.loadingComplete == true){
    clearInterval(this.loadingOk);
    self.c();
    }
    else {
    this.loadingOk = setInterval(this.loadingEditorCheck, 1000);
    }
    }
    }
    this.b();
    this.c=function(){
    alert('cccc')
    }
    setTimeout("alert(this.loadingComplete=true)",3000)
    }
    new a()
      

  3.   

    this.loadingEditorCheck 没调用他的地方
      

  4.   


    var a=function(){
                    var self=this;
                    this.b=function(){
                        alert(this==self)//弹出true
                        this.loadingEditorCheck = function(){ //这个this是self
                            if (self.loadingComplete == true){
                                clearInterval(this.loadingOk);
                                self.c();
                            }
                            else {
                                this.loadingOk = setInterval(this.loadingEditorCheck, 1000); //setInterval里的this应该是window的
                            }
                        }
                    }
                    this.b();
                    this.c=function(){
                        alert('cccc')
                    }
                    setTimeout("alert(this.loadingComplete=true)",3000)
                }
                new a()
      

  5.   


    setTimeout("alert(this.loadingComplete=true)",3000)   //<---这里的this是window对象//把 this 改成 a 就可以了
      

  6.   

    this来this去,不用那么多吧?函数定义,执行,都没作为类而实例化一系列方法,有必要那么多this?
    <script>
    var a=function(){
    var self=this;
    (function(){
    //alert(this==self)//弹出true
    var loadingOk = setInterval(function(){
    if (self.loadingComplete == true){
    clearInterval(loadingOk);
    loadingOk = null;
    self.c();
    }
    }, 1000);
    })()
    this.c=function(){
    alert('cccc')
    }
    setTimeout(function(){self.loadingComplete=true},3000)
    }
    new a()</script>