<script>
  function wandiannao(name,age,number)
  {
  this.name=name;
  this.age=age;
  this.number=number;
  this.look=function()
  {
  alert("看电视");
  }
  wandiannao.prototype.aaa={class:"一班"};
  }
  wandiannao.prototype.play=function()
  {
  alert("玩电脑");
  }
    var b=new wandiannao("yangcai",22,20102110130111);
var c=new wandiannao("liutian",20,20102110130203);
          alert(b.aaa.class);
 alert(b.aaa.class="二班");
 alert(b.aaa.class);
 alert(c.aaa.class);
  </script>
怎么输出的是:一班————>二班————>二班————>二班
我自己认为是要输出:一班————>二班————>二班————>一班
          alert(b.aaa.class);
 alert(b.aaa.class="二班");//这里只是b的那个共享属性改变了,为什么
 alert(b.aaa.class);
 alert(c.aaa.class);         这里c的那个共享属性也改变了呀!!!!!!我不懂!!求高手指点。

解决方案 »

  1.   

    原型属性是共享的  <script>
    function Person(){}
    Person.prototype.friends = ['tom','jack'];
    var person1 = new Person();
    var person2 = new Person();
    person1.friends.push('rose');
    alert(person1.friends);//tom,jack,rose
    alert(person2.friends);//tom,jack,rose
      </script>
      

  2.   

    不是复制的,你改成这个样子,就是你要的了
        
    function wandiannao(name,age,number){
            this.name=name;
            this.age=age;
            this.number=number;
            this.look=function(){
                alert("看电视");
            }
            this.aaa={class:"一班"};
            
        }
      

  3.   

    function wandiannao(name,age,number){
            this.name=name;
            this.age=age;
            this.number=number;
            this.look=function(){
                alert("看电视");
            }
            this.aaa={class:"一班"};
            
        }
    我想要的是,那个class属性要共享,但不随以后对象的实例化改变而改变!!!!!!!!!!!!
      

  4.   

    既然是共享,那就是会被改变。除非你实例化在变更之后alert(b.aaa.class="二班");
    alert(b.aaa.class);
    var c=new wandiannao("liutian",20,20102110130203);
    alert(c.aaa.class);另外,我能说一下咱能不用class这种保留字么?
      

  5.   

    因为wandiannao.prototype.aaa={class:"一班"};是对象,引用了