在对象中使用定时器的时候,我们会碰到这样一个问题:定时器的函数无法访问对象的属性,问题的原因是: 定时器访问的是全局属性,如下代码片段,定时器中this指的是window对象,没有在全局中定义变量是age的这么一个变量,所以这里打印undefined! <script type="text/javascript"> function TestObj(){ this.age=10; this.show=function(){ setTimeout(function(){ alert(this.age); },2000); }; } var testObj=new TestObj; testObj.show(); </script> 面对这种情况我想了一个比较笨拙的办法:如下代码块,可以创建一个全局变量,用定时器之前把当前对象赋值给这个全局变量,然后在定时器内直接用该变量访问对象的属性。 var cacheTestObj=null; function TestObj(){ this.age=10; cacheTestObj=this; this.show=function(){ setTimeout(function(){ alert(cacheTestObj.age); cacheTestObj.destory(); },2000); }; this.destory=function(){ cacheTestObj=null; }; } var testObj=new TestObj; testObj.show();