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

关于原型和原型链的理解

1.原型的概念

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

2.原型链的概念

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

总结:
JavaScript 中的对象,都有一个内置属性[Prototype],指向这个对象的原型对象。当查找一个属性或方法时,如果在当前对象中找不到,会继续在当前对象的原型对象中查找;如果原型对象中依然没有找到,会继续在原型对象的原型中查找(原型也是对象,也有它自己的原型);直到找到为止,或者查找到最顶层的原型对象中也没有找到,就结束查找,返回 undefined。这个查找过程是一个链式的查找,每个对象都有一个到它自身原型对象的链接,这些链接组建的整个链条就是原型链。拥有相同原型的多个对象,他们的共同特征正是通过这种查找模式体现出来的。
在上面的查找过程, 我们提到了最顶层的原型对象, 这个对象就是Object.prototype,这个对象中保存了最常用的方法,如 toString、valueOf、hasOwnProperty 等,因此我们才能在任何对象中使用这些方法。
看看这里:
js-原型和原型链的详细参考

相关文章:

  • 第四天
  • 测试如何在敏捷团队中工作?
  • 关于vuex的理解,用法
  • MySQL基础操作命令
  • 深入了解 var let const的区别
  • 【bzoj1044】木棍分割
  • promise(特点,项目中如何应用)
  • vux 获取后台数据
  • async,await(特点,项目中应用)
  • Horizon View 7 发布Win10桌面二:即时克隆桌面池配置
  • 系统恢复
  • generator(特点,项目应用)
  • Java日期类
  • 设计一个算法,判断玩家是否赢了井字游戏
  • ES6的数组方法详解(ES5新增)
  • 「译」Node.js Streams 基础
  • CSS相对定位
  • extjs4学习之配置
  • HTTP中的ETag在移动客户端的应用
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Lucene解析 - 基本概念
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 程序员该如何有效的找工作?
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 用Python写一份独特的元宵节祝福
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #### go map 底层结构 ####
  • #if #elif #endif
  • (1)STL算法之遍历容器
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (TOJ2804)Even? Odd?
  • (动态规划)5. 最长回文子串 java解决
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (一)SpringBoot3---尚硅谷总结
  • (原)本想说脏话,奈何已放下
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET : 在VS2008中计算代码度量值
  • .Net 8.0 新的变化
  • .NET Core跨平台微服务学习资源
  • .net 程序发生了一个不可捕获的异常
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .net中的Queue和Stack
  • @Bean, @Component, @Configuration简析
  • @Conditional注解详解
  • [AIGC] Redis基础命令集详细介绍
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试