• 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、原型继承

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

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

  • 相关阅读:
    Java项目:SSM课堂听课记录管理系统
    vi编辑器:-vi的使用方法的记录
    计算机毕业设计Java教师职称评定系统(源码+系统+mysql数据库+lw文档)
    西门子S7-200SMART常见通讯问题解答
    【开发指南】AR Foundation 开发环境部署
    主定理(master定理)
    JS工具类
    [MyBatis]一级缓存/二级缓存/三方缓存
    cmake 升级
    Java项目:JSP中华传统美食网站平台管理系统
  • 原文地址:https://blog.csdn.net/m0_56713342/article/details/134534460