刚学,新手问题function Person(name,age)
{
    this.name=name;
    this.age=age;     var addAge=function(value){
       //alert(this.age)  为什么此时的this.age是undefined
          this.age+=value;
     };     this.getAge=function(){
          addAge(1);
          alert(this.age);
     };
}
结果肯定是错的,根本没加,局部方法中那个this.age是undefined的,这是为什么?正确的应该怎么写?

解决方案 »

  1.   

    <script>
    function Person(name,age) 

        this.name=name; 
        this.age=age;     var addAge=function(value){ 
              alert(this.age);
              this.age+=value; 
              alert(this.age);
        };     this.getAge=function(){ 
              addAge(1); 
              alert(this.age); 
        };
        addAge(22)
    }
    Person('fdjksa',33)
    </script>
    没问题好像
      

  2.   


    function Person(name,age) 

        this.name=name; 
        this.age=age;     //var addAge=function(value){ 
        //  alert(this==window)//  为什么此时的this.age是undefined ,这个方法的this表示window对象
        //      this.age+=value; 
        //}; 
         this.addAge=function(value){ 
          alert(this==window)//  为什么此时的this.age是undefined 
              this.age+=value; 
        };     this.getAge=function(){ 

              this.addAge(1); 
              alert(this.age); 
        }; 

    var p=new Person("aa",2);
    p.getAge();
      

  3.   

    因为作用域链~·所以this指向了window,可window没有age属性,所以弹出undefined
    <script type="text/javascript">
    function Person(name,age) 

    this.name=name; 
    this.age=age; 
    var that = this; //指向当前对象
    var addAge=function(value){ 
              alert(that.age);
      that.age+=value; 
    }; 

    this.getAge=function(){ 
      addAge(1); 
      alert(this.age); 
    }; 
    }
    </script>
      

  4.   

    懂了,原来是this陷阱,我还以为只有委托里面有是不是局部方法域中的this都是windows,全局方法中的this就是指的类对象。这个有哪本书讲了么,我买了几本书对this都讲的很简单
      

  5.   


    javascript权威指南5~·里面讲得细 楼主可以看看
      

  6.   

    参考:http://topic.csdn.net/u/20090217/13/653f7949-9e0c-4e99-adb3-dcbc99fca8d5.html
    http://topic.csdn.net/u/20081005/22/0cf5e7d3-a4e2-4881-91e5-146092c94a94.html