请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么Student.__proto__输出class People

以下是浏览器里输入Student.__proto__运行的结果,Student不是没有__proto__么,为什么会输出PeoPle?

> Student.__proto__
> class People {
    constructor(name) {
        this.name = name
    }
    eat() {
        console.log(`${this.name} eat something`)
    }
}

正在回答 回答被采纳积分+3

1回答

双越 2021-04-20 22:19:22

这个逻辑没问题,因为 Student extends People 也是有一层继承关系的。可以子类可以使用父类的方法,例如

class A {}
A.bar = function() { console.log('bar') }

class B extends A {}
B.__proto__.bar() // 'bar'


0 回复 有任何疑惑可以回复我~
  • 提问者 起点丶 #1
    但是我刚才试了下:Student.__proto__.eat()会报错
    ·VM1736:1 Uncaught TypeError: Student.__proto__.eat is not a function·
    回复 有任何疑惑可以回复我~ 2021-04-20 23:07:47
  • 提问者 起点丶 #2
    我有点迷了,不是只有实例才有__proto__隐式原型么?按照课程中的那个原型链的图,Student的prototype显示原型和xialuo的__proto__隐式原型都指向Student.prototype
    回复 有任何疑惑可以回复我~ 2021-04-20 23:11:53
  • 提问者 起点丶 #3
    每个class都有显式原型prototype;
    每个实例都有隐式原型__proto__;
    实例的__proto__指向对应class的prototype;
    回复 有任何疑惑可以回复我~ 2021-04-20 23:13:37
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信