日期:2014-05-16  浏览次数:20416 次

求助...对象set get方法出现奇怪现象

<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>


------解决方案--------------------
因为当用new操作符的时候,Person是忽略其返回值的。

var person = new Person();
 
这是构造了一个Person,person指向构造器内部的this,而不是return返回的obj。
------解决方案--------------------
当new Person()是,返回了一个新的对象,就是return块内容,这是return块中没有那么属性,设置alert再person.name肯定是undefined