JS - 原型、实例化、继承

1. 原型的基本概念

在 JavaScript 中,每个函数都有一个prototype属性(注意,是函数才有这个属性,不是对象)。这个prototype属性指向一个对象,这个对象被称为函数的原型对象。当通过一个函数创建一个对象(使用new关键字)时,这个新创建的对象会自动拥有对函数原型对象的引用。
例如,对于一个简单的函数:

   function Person() {
       // 函数体
   }
   console.log(Person.prototype); 

这里输出的Person.prototype就是Person函数的原型对象,它初始包含一个constructor属性,这个属性指向Person函数本身,即Person.prototype.constructor === Person。
在这里插入图片描述

2. 实例化和继承

在这里插入图片描述

3. ES6中class的继承

同时,在现代 JavaScript 开发中,也有一些基于类(ES6 中的class语法)的继承方式,这些方式在底层其实也是利用了原型链的原理,但语法上更加清晰和易于理解。

  • class的基本概念
    ES6 的class可以看作只是一个语法糖:
    在这里插入图片描述

类的数据类型就是函数,类本身就指向构造函数:在这里插入图片描述

类中的所有方法都定义在类的prototype属性上面,因此,在类的实例上面调用方法,其实就是调用原型上的方法:

在这里插入图片描述

  • class的继承
    Class 可以通过extends关键字实现继承,让子类继承父类的属性和方法;
    ES6 规定,子类必须在其constructor()方法中调用super(),否则就会报错;
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值