美文网首页
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