<script type="text/javascript">
    foo=function(){
        this.mayName="Foo function"
        alert(this.mayName)
    };
    foo.prototype.sayHello=function(){
        alert(this.mayName)
        console.log(foo.prototype)
    };
    foo.prototype.bar=function(){
            setTimeout(this.sayHello,1000)
    };
    var f=new foo;
    f.bar();
</script>

  在这个demo中,需要输入“Foo function”,但是在网页中一直输出undefined,却一直找不到原因,纠结了一阵子。

原来,是因为setTimeOut把this的指向给改变了,指向了widows,在此同时,如果在

 foo.prototype.bar=function(){
            setTimeout(this.sayHello(),1000)
    };

 this.sayHello后面加一个“()”就能把this指向给改回。

   这个坑,你们遇到了么?