• JavaScript原型,原型链 ? 有什么特点?


    • 每个对象都会在其内部初始化一个属性,就是__proto__,当我们访问一个对象的属性时
    • 如果这个对象内部不存在这个属性,那么他就会去__proto__里找这个属性,这个__proto__又会有自己的__proto__,于是就这样一直找下去,也就是我们平时所说的原型链的概念。按照标准,__proto__ 是不对外公开的,也就是说是个私有属性
    • 关系:instance.constructor.prototype == instance.__proto__
    // eg.
    var a = {}
    
    a.constructor.prototype == a.__proto__
    
    • 1
    • 2
    • 3
    • 4
    • 特点:

      • JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变
    • 当我们需要一个属性的时,Javascript引擎会先看当前对象中是否有这个属性, 如果没有的

    • 就会查找他的Prototype对象是否有这个属性,如此递推下去,一直检索到 Object 内建对象

    • 原型:

      • JavaScript的所有对象中都包含了一个 [__proto__] 内部属性,这个属性所对应的就是该对象的原型
      • JavaScript的函数对象,除了原型 [__proto__] 之外,还预置了 prototype 属性
      • 当函数对象作为构造函数创建实例时,该 prototype 属性值将被作为实例对象的原型 [__proto__]
    • 原型链:

      • 当一个对象调用的属性/方法自身不存在时,就会去自己 [__proto__] 关联的前辈 prototype 对象上去找
      • 如果没找到,就会去该 prototype 原型 [__proto__] 关联的前辈 prototype 去找。依次类推,直到找到属性/方法或 undefined 为止。从而形成了所谓的“原型链”
    • 原型特点:

      • JavaScript对象是通过引用来传递的,当修改原型时,与之相关的对象也会继承这一改变
  • 相关阅读:
    【C++学习】日期类和内存管理
    【计算机系统结构期末复习】第五章
    Rocketmq学习1——Rocketmq架构&消息存储&刷盘机制
    2022宁夏杯大学生就业问题分析
    工作 7 年的老程序员,现在怎么样了
    搭建一个springboot项目的基本流程
    Open3D学习笔记
    【Mysql系列】mysql中删除数据的几种方法
    Openstack环境预设1
    渲染路径 - Deferred Texturing
  • 原文地址:https://blog.csdn.net/php_martin/article/details/125757285