我已经创建了一个关于“继承”的表格。比较---原型---> 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
慕码人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__)
添加回答
举报
0/150
提交
取消