| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | <!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta http-equiv="X-UA-Compatible" content="IE=edge">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>Document</title></head><body>  <script>    function Person(name,age){      this.name = name      this.age = age    }    /*       所有的构造函数下面都有一个prototype 属性        这个属性指向它的原型对象      原型对象的特点: 声明在原型对象下面的属性和方法   都被实例化对象所共享      属性写在   构造函数里      方法写在   原型对象下    */    Person.prototype.eat = function(){      console.log(this.name + 'eat')    }    var p1 = new Person('zs',30)    p1.eat()    console.log(p1)    /*       继承父类的属性 在子类的构造函数里面 通过调用父类的.call 去继承      子类的继承对象  =  new 父类 继承方法    */    function Coder(name,age){      Person.call(this,name,age)    }    /* 继承父类的方法 */    Coder.prototype = new Person()    Coder.prototype.constructor = Coder    console.log(Coder.prototype.constructor)    var c1 = new Coder('lisi',20)    console.log(c1)    c1.eat()  </script></body></html>
 |