先上测试代码,很简单,就是定义一个似有变量,然后通过构造函数方法返回变量,通过原型方法设置变量,代码的结果是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>