从a类到b类理解原型链

一.一个Student类

  class Student {
      constructor(name, age) {
        this.name = name;
        this.age = age;
      }
      learn() {
        console.log("学习");
      }
    }

    let a1=new Student('王德发',20)
    console.log(a1);

打印出来的结果:

二.extends继承

    // 老师类
    class Teacher {
      constructor(name, age) {
        this.name = name;
        this.age = age; //工资
      }
      teach() {
        console.log("教书");
      }
    }
    // 学生类 继承 父类
    class Student extends Teacher {
      constructor(name, salary) {
        super(name);
        this.salary = salary; //工资
      }
      learn() {
        console.log("学习");
      }
    }

    // 创建一个学生的实例化对象

    var student1 = new Student("吕德华", 3000);
    // 打印这个实例化对象
    console.log(student1);

打印的结果:

三.访问的过程

__proto__作为存取器属性,在内部指向 [ [Prototype]],不过 [ [Prototype]]是不能在代码中直接访问的,只能通过__proto__访问

四.总结

所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法。

上述案例我们访问tach方法。

可以访问

为什么能访问?

这里可以理解为:

Student类继承了Teacher这个类,所以能够访问,但是以什么方式进行传递的呢?

1.首选查找自己类上有没有teach这个方法,没有。

2.查他的上上一级类,也就是继承的类Teacher这个类。

那么以什么方式进行查找的呢?

Student这个类上的prototype属性,也是一个对象,那么在他的基础上加上一层prototype(原型对象)

来实现方法的传递。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值