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

关于继承我不了解的几件事

关于继承我不了解的几件事

富国沪深 2021-04-25 12:10:09
我已经创建了一个关于“继承”的表格。比较---原型---> Animal.prototype(constructor,run)兔子--- [[prototype]] --->比较兔子---原型--->动物Rabbit.prototype --- [[[prototype]] ---> Animal.prototype(constructor,run)rabbit(name:'White Rabbit')--- [[[prototype]] ---> Rabbit.prototype兔子(名字:'白兔子')--- prototype ---> Rabbit。认为他们是真的。但是,请指定是否有错误。我写了一些代码来理解“继承”的主题。但是有几个没有给我想要的结果。但是有几个没有给我想要的结果。(注释行中的规范) class Animal {    constructor(name, speed) {      this.speed = speed;      this.name = name;    }    run(speed = 0) {      this.speed += speed;      console.log(`${this.name} runs with speed ${this.speed}.`);    }    static compare(animalA, animalB) {      console.log(animalA.speed - animalB.speed);    }  }  class Rabbit extends Animal {    hide() {      console.log(`${this.name} hides!`);    }  }  let rabbits = [    new Rabbit("White Rabbit", 5),    new Rabbit("Black Rabbit", 10)  ];  console.log(Rabbit.__proto__ === Animal); // true (not problem)  console.log(Animal.__proto__ === Function.prototype); // true (not problem)  console.log(Rabbit.__proto__ === Animal.prototype); //(not problem)  console.log(Rabbit.__proto__.prototype === Animal.prototype); //(not problem)    console.log(rabbits[1].__proto__ === Animal.prototype);   // this problem  // rabbit(name:'White Rabbit') ---[[prototype]]---> Rabbit.prototype ?
查看完整描述

3 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

兔子是一个对象兔子,而不是动物(直接),所以兔子的原型将指向兔原,和兔子的原型将指向动物的原

检查这个

rabbits[1].__proto__ === Rabbit.prototype


查看完整回答
反对 回复 2021-05-06
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

当您创建Rabbit类的对象[rabbit]时,它将获得Rabbit.prototype作为其[[Prototype]]属性。和兔子。proto(即[[Prototype]])获取Animamal.prototype属性。因此,这就是兔子继承其祖先属性的方式。

rabbit[1]<--(Inherits from Rabbbit which is rabbit[1].__proto__) <-- (Inherits from Animal rabbit[1].__proto__.__proto__)



查看完整回答
反对 回复 2021-05-06
  • 3 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

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