当前位置: 首页 > news >正文

构造函数的原型原型链

代码示例

// 定义一个构造函数 Test
function Test() {this.name = '张三'
};
//向构造函数的原型添加一个属性 age=18
Test.prototype.age = 18;//使用构造函数 Test 来实例化一个新对象
const test = new Test();//向 Object.prototype 添加了一个名为 sex 的属性,其值为 '男'
Object.prototype.sex = '男';/*** 原型链就是,以一个对象为基准,以__proto__为链接的这条链条,一直到 Object.prototype 为止到这条链叫原型链* * test{*  name: '张三'*  __proto__: Test.prototype{*      age: 18*      __proto__:Object.prototype{*          sex: '男',*          __proto__: null *      }*  }}*/console.log(test.name);//张三
console.log(test.age);//18
console.log(test.sex);//男
console.log(test.dream);//undefined
console.log(Object.prototype.__proto__)// null

代码理解

  1. 定义了一个构造函数Test ,它会在被调用时给新创建的对象添加一个名为name的属性,并将其的值设为“张三”
  2. 向构造函数的原型(Test.prototype)添加一个名为age的属性,值为18。通过 new Test() 创建的实例都会继承这个age属性,除非它们自身覆盖了这个属性。
  3. new Test() 创建了一个新的对象 test,它拥有自己的name 属性,同时也继承了来自Test.prototype age 属性。
  4. 修改了 Object.prototype ,为其添加了一个名为 sex 的属性,其值为 '男'

原型链理解

test 对象的原型链结构。test.__proto__ 指向的是Test.prototype,而 Test.prototype.__proto__ 则指向 Object.prototype。最后Object.prototype.__proto__ null,表示原型链的末端。

综上所述我们可以理解原型链就是:

每个对象都有一个__proto__属性,它指向另一个对象,这个对象称之为对象的原型。当试图访问对象的属性时,javascript 引擎不仅会查找该对象自身拥有的对象,还会沿着__proto__向上查找,直到找到该属性或者到达原型链末端(即null)。即原型链就是,以一个对象为基准,以__proto__为链接的这条链条,一直到 Object.prototype 为止到这条链叫原型链

概念

原型(prototype):是所有由构造函数创建的实例共享的对象,包含了可以被这个实例访问的方法和属性。
__proto__:是对象的内部属性,指向创建它的构造函数的prorotype
原型链 :以对象为基准,以__proto__为链接的这条链条,一直到 Object.prototype 为止到这条链叫原型链。

http://www.lryc.cn/news/520002.html

相关文章:

  • nginx反向代理及负载均衡
  • 单片机实物成品-011 火灾监测
  • 使用 Docker 在 Alpine Linux 下部署 Caddy 服务器
  • 每日十题八股-2025年1月12日
  • Python中定位包含特定文本信息的元素
  • uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验
  • 极品飞车6里的赛道简介
  • SAP推出云端ERP解决方案,加速零售行业数字化转型
  • Python爬虫进阶——案例:模拟bilibili登录)
  • 什么是数据分析?
  • 基于springboot的课程作业管理系统源码(springboot+vue+mysql)
  • 多线程之旅:属性及其基本操作
  • 数据表中的数据插入、更新和删除
  • Q_OBJECT宏报错的问题
  • 提升性能300ms:深入解析Spring多表联接查询优化与SQL调优实战
  • 增量导入和全量导入的区别是什么?
  • 【百度智能云客悦智能客服】搭建AI agent智能对话 - 购车推荐
  • 【HTML+CSS+JS+VUE】web前端教程-3-标题标签
  • 逐笔成交逐笔委托Level2高频数据下载和分析:20250102
  • JavaEE之线程池
  • java 中 main 方法使用 KafkaConsumer 拉取 kafka 消息如何禁止输出 debug 日志
  • 【后端面试总结】Golang可能的内存泄漏场景及应对策略
  • Java 反射机制详解
  • 【k8s】scc权限 restricted、anyuid、privileged
  • 2025华数杯国际赛A题完整论文讲解(含每一问python代码+数据+可视化图)
  • ThreadLocal 的使用场景
  • 后端开发 Springboot整合Redis Spring Data Redis 模板
  • 代码随想录算法训练营第 4 天(链表 2)| 24. 两两交换链表中的节点19.删除链表的倒数第N个节点 -
  • 【RDMA学习笔记】1:RDMA(Remote Direct Memory Access)介绍
  • 网络安全常见的35个安全框架及模型