employee.prototype.salary=null;是在对象原型上的salary  当对象没有salary的时候才会被找到
bill.salary=20000; 只有bill才有的salary

解决方案 »

  1.   

    function employee(name,job,born)
    {
    this.name=name;
    this.job=job;
    this.born=born;
    }var bill=new employee("Bill Gates","Engineer",1985);employee.prototype.salary=10;
    bill.salary=20000;document.write(bill.salary);
    var k=new employee("Bill Gates","Engineer",1985);
    document.write(k.salary);
      

  2.   

    prototype是所有对象都有的,第一种是直接给对象增加属性prototype相当于oo语言的继承,第一种就是覆载
      

  3.   

    function employee() {}var bill=new employee();employee.prototype.salary=1000;//给 employee 类附加一个属性bill.salary=20000;
    document.write(bill.salary);x = new  employee();
    document.write(x.salary);
    200001000
    function employee() {}var bill=new employee();//employee.prototype.salary=1000;//给 employee 类附加一个属性bill.salary=20000;
    document.write(bill.salary);x = new  employee();
    document.write(x.salary);
    20000undefined
      

  4.   

    在读取bill.salary时,bill会先在自身属性里查找,如果自身有该属性就停止查找并把salary的值读取出来,如果没有就继续向上 在bill的原型对象(即employee.prototype)里查找。第一段代码 实际上可以理解为bill 有两个salary属性,一个是它自身的且值为2000 一个是在原型对象里的值为null,因为查找属性时会先从对象自身开始查找,所以打印出来的是bill自己的salary.
    第二段代码 先在bill自身属性里找  结果没有  所以接着在原型对象里找  结果找到了  所以打印出来的是原型对象里的salary.
      

  5.   

    employee.prototype.salary是全体employee的salary的默认值
    employee.prototype.salary=null;//设置默认值为null
    employee.prototype.salary = 20000;//设置默认值为20000
      

  6.   

    如果你拿employee 当 class 来用的话.
    实例化每个对象都引用同一个 employee.prototype. 如果你不要共享的话,就写在class里面,用this .
    当你调用 obj.salary 的时候js会先去找obj属性,如果没有找到就会用 prototype来代替