1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <script> 7 /** 8 * 为什么需要原型以及原型的使用: 9 * 1.原型也是一个对象,通过原型可以实现对象的属性继承 10 */ 11 12 13 function Person(name,sex) { 14 this.name = name || "匿名"; 15 this.sex = sex || "男"; 16 } 17 18 // 构造函数 - 学生 19 function Student(a,b,number) { 20 // 借用继承 21 // 继承Person的属性 22 Person.call(this,a,b); 23 this.number = number; 24 } 25 26 // 借用继承的缺点: 27 // 通过原型对象添加属性/ 方法,无法顺利继承过来 28 // 因为call其实只会调用Person构造函数内部的属性 29 Person.prototype.sayHi = function () { 30 console.log("我是Person,我是男生"); 31 } 32 33 34 // 原型继承:继承Person的原型方法 35 // 这句话可以让Student 从Person身上继承过来一些属性 36 // 原型继承的缺点: 暂时还改动不了从原型继承过来的属性/方法 37 Stuent.prototype = new Person(); 38 // 由于实例对象没有constroctor,手动指向 39 Student.prototype.constructor = Person; 40 41 42 43 var stu1 = new Student("小明","男","一号男主角"); 44 console.log(stu1); 45 stu1.sayHi(); 46 console.log(stu1.name); 47 </script> 48 </head> 49 <body> 50 51 </body> 52 </html>