<script>
function Person(){
var _name='_name'; //中间变量,私有变量,在alert中会显示undefined
this.name='name';      //保留return块,alert为undefined 若保留this块,显示name
/*
//return块
return {
getName:function() {
return _name;
},
setName:function(myName) {
_name=myName;
}
}
*/
/*
//this块
this.getName=function() {
return _name;
}
this.setName=function(myName) {
_name=myName;
}
*/
}
var person=new Person();
alert(person._name);  
alert(person.name);   //这个有问题,return块和this块对_name操作的不同,会影响到name的值,为什么
</script>

解决方案 »

  1.   

    因为当用new操作符的时候,Person是忽略其返回值的。var person = new Person();
     
    这是构造了一个Person,person指向构造器内部的this,而不是return返回的obj。
      

  2.   

    在构造函数里return  不是很明白你的意思
      

  3.   

    当new Person()是,返回了一个新的对象,就是return块内容,这是return块中没有那么属性,设置alert再person.name肯定是undefined