js原型和原型链的理解

// 父类
  class People {
    constructor(name){
      this.name = name
    }
    eat(){
      console.log('测试一下原型链');
    }
  }
  // 子类    extends继承父类 
  class Student extends People {
    constructor(name,number){
      // super用来继承父类的属性
      super(name)
      this.number = number
    }
    sayHi(){
      console.log(`name${this.name},number${this.number}`);
    }
  }
  // 子类
  class Teacher extends People {
    constructor(name,major){
      super(name)
      this.major = major
    }
    sayHi(){
      console.log(`name${this.name},number${this.number}`);
    }
  }
  // 实例
  const xialuo = new Student('xialuo',100)
  // console.log(xialuo.number);
  xialuo.sayHi();
  xialuo.eat();
  const laoshi = new Teacher('teacher',200)
 laoshi.sayHi();
 laoshi.eat();
 console.log(xialuo.__proto__); //隐式原型
 console.log(Student.prototype,'---'); //显示原型
 console.log(People.prototype,'prople的原型');
 console.log(xialuo.__proto__ === Student.prototype);
 console.log(Student.prototype.__proto__ === People.prototype)
 console.dir(xialuo);
 console.dir(Student)

原型关系
1、每个class都有显示原型prototype
2、每个实例都有隐式原型__proto__
3、实例的__proto__指向对应class的prototype

原型链

个人理解 :比如实例要调用一个方法, 比如People的eat方法,首先这个Student的实例会先向Student的这个类的prototype中找,如果没有找到会一直向上找然后找到People中找,找到了则执行这个方法,如果没有会接着向上找,这样就行成了原型链,纯属个人理解,如有不对请及时指出,共同学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值