function Person()
{
 this.name='尹杰';
 this.sex='男'; 
}
Person.prototype.name='黄石';
var person1=new Person;
alert(person1.prototype.name);如何获取黄石的信息

解决方案 »

  1.   

    function Person()
    {
     this.name='尹杰';
     this.sex='男'; 
    }
    var person1=new Person();Person.prototype.name3='黄石';alert(person1.name3);能取到,也就是说在new的时候,黄石已经被替换了,prototype是原形的意思,可以理解为默认值,但你在建立函数时有 this.name='尹杰',也就是把默认值为复盖了。我说不一定对,只是我自己这样理解的
      

  2.   

    prototype是对类的一种扩展,在其上定义的方法或属性,会被应用到所有实例上。
    而当类主体定义了同样名称的方法或属性时,prototype上的方法或属性会被隐藏,而不是被覆盖。看以下代码便知:
    function Person() {
        this.name = '尹杰';
        this.sex = '男';
    }
    Person.prototype.name = '黄石';
    var p = new Person;
    alert(p.name);
    delete p.name;
    alert(p.name);
    // 结果
    // '尹杰'
    // '黄石'
    作者应该深入去理解prototype的机制,就明白为什么访问不到'黄石'了
      

  3.   

    function Person()
    {
     this.name='尹杰';
     this.sex='男'; 
    }var person1=new Person;
    Person.prototype.name1='黄石1';
    alert(person1.name1+'--name:'+person1.name);
    结果:黄石1--name:尹杰
      

  4.   

    function Person()
    {
     this.name='尹杰';
     this.sex='男'; 
    }
    Person.prototype.name='黄石';
    var person1=new Person;
    alert(Person.prototype.name);
      

  5.   


    // this.name 这句的优先级比prototype里面的name属性要高
    // 非得输出“黄石”的话就这样
    alert(person1.constructor.prototype.name);