function people(){
    this.name = new Name();
    this.age = "17";
}function Name(){ }Name.prototype.printf(){    //在这里.如何能引用到 people的实例对象
  //如 age 属性值.
}

解决方案 »

  1.   


    <script type="text/javascript">
    <!--
    function people(){
        this.name = new Name();
        this.age = "17";
    }function Name(){ }Name.prototype = new people();
    Name.prototype.constructor = Name;
    Name.prototype.printf = function(){
    alert(this.age)
    }var n = new Name();
    var o = new people();
    n.printf();//-->
    </script>
      

  2.   


    <script type="text/javascript">
    <!--
    function people(){
        this.name = new Name();
        this.age = "17";
    }function Name(){ }Name.prototype.printf = function(){
    people.call(this);
    alert(this.age);
    }var n = new Name();
    n.printf();//-->
    </script>
      

  3.   

    我觉得第二种方法.也许不是很妥当呢.people.call(this)会不会有问题呢..如果people() 里执行了一些其它语句
    .比方说一个alert(). 
      

  4.   


    一个对象要具有另一个对象的属性,可以想象到继承.
    所以#1给你的就是JS的原型继承
    Name.prototype = new people();//将people对象实例赋给Name的原型,这样Name就具有了people的属性了
    而#3是通过call类似对象冒充.
    people.call(this);// 正常this是指当前对象Name但通过people.call(this).就将this的指针引用指向people了
                      // 所以alert(this.age)//这里的this就相当于people具体楼主可以百度:
    1.javascript原型继承
    2.javascript call和apply
    宗旨其实就是继承
      

  5.   


    <script type="text/javascript">
    <!--
    // 类抄写
    var Extend = function(destination, source){
    for(var pro in source){
    destination[pro] = source[pro];
    }
    return destination;
    }
    function people(){
        this.age = "17";
    }function Name(){ }
    Extend(Name.prototype,new people())Name.prototype.printf = function(){
    alert(this.age);
    }var n = new Name();
    n.printf();//-->
    </script>