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

学习javascript 构造函数原型方法属性遇到的问题
先上测试代码,很简单,就是定义一个似有变量,然后通过构造函数方法返回变量,通过原型方法设置变量,代码的结果是undefined undefined 'www'问题来了,为什么调用的b1对象方法,却只有b3的user被设置呢。。。这个想了一会,只有一个解释能说服自己:调用原型方法时在box的原型中找不到user变量,于是查找离方法调用最近的对象,设置里面的user变量可以通过把b1.setuser拿到b2下面做测试。如果有同学有不同见解欢迎交流。
<script>
	function box(){
		var user;
		this.getuser=function(){
			return user;
		};

		box.prototype.setuser=function(value){
			user=value;
		};
	}
	var b1=new box();
	var b2=new box();

	var b3=new box();
	b1.setuser('www');	
	alert(b1.getuser());
	alert(b2.getuser());
	alert(b3.getuser());
</script>