• js进阶笔记之原型,原型链


    目录

    1、原型对象

    constructor 属性

    对象原型

     2、原型链

    3、instanceof 

    4、原型继承


    1、原型对象

    面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。

    面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。

    面向过程开发(关注具体实现步骤)   

     面向对象开发(分析涉及的对象,指挥对象完成)----- 封装、继承、多态

      原型为了共享公共的成员     prototype 
     原型:JS为每个构造函数提供一个属性prototype(原型),它的值是一个对象,prototype也叫原型对象
     

    构造函数通过原型分配的函数是所有对象所 共享的。

    • JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象

    • 这个对象可以挂载函数,对象实例化不会多次创建原型上函数,节约内存

    • 我们可以把那些不变的方法,直接定义在 prototype 对象上,这样所有对象的实例就可以共享这些方法。

    • 构造函数和原型对象中的this 都指向 实例化的对象

    constructor 属性

    constructor  属性,原型对象的属性---->原型对象的构造函数
     

    访问成员的查找原则

     访问对象成员的原则:先查找自己身上有没有,有的话就使用,没有去原型查找

    对象原型

    对象都会有一个属性__proto__ 指向构造函数的 prototype 原型对象,之所以我们对象可以使用构造函数 prototype  

    __proto__ 对象原型里面也有一个 constructor属性,指向创建该实例对象的构造函数

     三者关系

    构造函数   原型    原型对象

    每个对象都有一个_proto_属性(非标准属性->ES6标准属性),指向原型对象,它与[[Prototype]]等价

     2、原型链


        对象访问成员的机制


        1、首先查找自身有没有,有就就近原则使用
        2、自身没有该成员,通过_proto_找到原型对象,看原型对象上有没有,有就执行
        3、假如原型对象上也没有,再找原型对象的_proto__,一直找到0bject.prototype
        4、一直找到Object. prototype,找不到就undefined

    3、instanceof 

    typeof  检测数据类型   不能精准的检测引用类型
     instanceof 实例对象 instanceof  构造函数
      判断构造函数的原型对象是不是在实例对象的原型链上


    4、原型继承

    继承方式:构造函数继承、原型继承、组合继承、。。。。

        原型继承-----> 儿子的原型指向父实例对象,这样父实例对象的成员就可以实现继承
        
        缺点:继承的引用类型属性就一份

  • 相关阅读:
    stacking算法基本思想
    QSystemTrayIcon::Trigger(案例)
    【学习笔记】空间坐标系旋转与四元数
    Android init.rc 解析
    小白学习c++的的第一节课
    Linux 内核启动分析
    LVS-群集架构介绍(linux 虚拟服务)
    DBA 数据库管理 表管理 数据批量处理。表头约束
    8、表格标签
    SpringMVC基础篇(二)
  • 原文地址:https://blog.csdn.net/m0_56713342/article/details/134534460