为了账号安全,请及时绑定邮箱和手机立即绑定

用组合继承写一个继承,获取不到父类原型链上的方法

用组合继承写一个继承,获取不到父类原型链上的方法

胡说叔叔 2018-07-22 14:42:14
题目描述我想写一个继承,子类的实例能够继承父类的方法和属性题目来源及自己的思路相关代码function Animal (name) {    this.name = name || 'Animal';    this.sleep = function () {        console.log(this.name + '正在' + 'eatting')     } } Animal.prototype.eat = function (food) {    console.log(this.name +'吃' + food) }function Cat(name, food) {     Animal.call(this, name)    // console.log(Animal.name, name)     this.food = food || 'meat'} extend (Animal, Cat)function extend (subClass, superClass) {     subClass.prototype = new superClass()     subClass.prototype.constuctor = subClass //修复构造函数指向的}const cat = new Cat('haixin', 'fish')console.log(cat.name) // haixinconsole.log(cat) // Cat { name: 'haixin', sleep: [Function], food: 'fish' }//cat上面没有Animal上原型链上的eat方法cat.eat() // TypeError: cat.eat is not a function你期待的结果是什么?实际看到的错误信息又是什么?我以为新生成的cat这个实例能够获得Cat和Animal上的方法和属性,但Animal上原型链上的eat方法获取不到,不知道为什么?还有为什么extend方法里subClass.prototype的constuctor属性要重新指向subClass?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 773 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信