老师看代码 经典继承不写 Student.prototype = new People()的话就不能用父类的方法,只能用属性,经典继承本身就是这样的吗
<!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> // 借用构造函数(在子类构造函数的内部调用超类构造函数,注意用call()指定上下文),实现伪造对象/经典继承 // 利用原型链实现继承 子类拥有符类的所有属性和方法 function People(name, age, sex) { this.name = name; this.age = age; this.sex = sex; } People.prototype.sayHello = function () { console.log('你好我是' + this.name + '我的年龄是' + this.age + '我是' + this.sex + '生'); }; People.prototype.sleep = function () { console.log(this.name + 'zzzz'); }; // 子类也要被定义 function Student(name, age, sex, school, studentNumber) { People.call(this,name, age, sex) // this.name = name; // this.age = age; 程序更简洁 // this.sex = sex; this.school = school; this.studentNumber = studentNumber; } // ***实现继承的关键语句!!!! Student.prototype = new People(); // 经典继承要不要写这一句话?不写的话People里面的方法Student就不能用 下面被注释掉的语句会出错 // Student的实例 var xiaogang = new Student('小刚', 12, '男', '艾利斯顿商学院', 10086); console.log(xiaogang.name); console.log(xiaogang.school); // xiaogang.sayHello(); 这里不注释掉的话程序出错 // xiaogang.exam(); // Peopel实例 var laozhao = new People('张继你', 55, '男'); laozhao.sayHello(); </script> </body> </html>
源自:面向对象
8-4 借用构造函数
13
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕慕子
2022-05-11 09:48:49
同学你好,对于你的问题解答如下:
1、理解有误差,并不是不能用父类的方法,而是,经典继承只能继承父类实例上的属性和方法,并不能继承父类prototype上的属性和方法
2、经典继承指的就是借用构造函数实现的继承,不用写Student.prototype = new People(); 这句代码,如果添加上Student.prototype = new People(); 那么就是下节课老师要讲解的组合式继承。
3、跟着课程安排继续往后学习,会发现老师讲解了多种继承方式,每种继承方法都有自己的优缺点,开发中结合实际需求,灵活应用某一种方式实现效果即可。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星