美文网首页
13.JS基础之class的构建与继承

13.JS基础之class的构建与继承

作者: 双鱼九年 | 来源:发表于2021-09-07 14:41 被阅读0次

class为es6推出的,本质上就是原型链继承的语法糖,例如有class People ,typeof People //function,说明本质上People还是个函数方法,class本质上还是js的原型链继承,并不是真正的class继承

构建constructor,在执行new实例化对象时,其实就是在执行class中的constructor函数

继承主要用到extends继承和super执父类的构造函数

类型判断

{} instanceof Object  // true

这里可以理解为,{}继承于Object

隐式原型和显示原型

隐式原型:x.__proto__

显示原型:People.prototype

xialuo.__proto__ = People.prototype

原型关系

每个class都有显示原型prototype

每个实例都有隐式原型__proto__

实例的__proto__指向对应class的prototype

执行规则

获取属性xialuo.name或执行方法xialuo.sayhi()时

先在自身属性和方法寻找

找不到则自动去__proto__中寻找

原型链

Student.prototype.__proto__ === People.prototype

检测当前属性是否属于当前对象

xialuo.hasOwnProperty('name') // true

xialuo.hasOwnProperty('sayHi') // false

hasOwnProperty只是Object众多属性方法中的一个

A  instanceOf B

instanceOf工作原理即判断A的__proto__是否可以顺着原型链找到B的prototype

注意:class是ES6语法规范,即只是一种代码书写规范,并不是规定了原型的具体实现方式,原型的实现与继承可以有多种方式。本文提到的实现方式都是V8引擎的实现方式,也是目前主流方式

相关文章

网友评论

      本文标题:13.JS基础之class的构建与继承

      本文链接:https://www.haomeiwen.com/subject/npqwbltx.html