怎么理解JavaScript原型、原型链

原型

JavaScript被描述为一种基于原型的语言,也就是每一个对象都拥有一个原型对象。

当我们访问一个对象的属性时,它不仅仅该改对象上查找,还会到这个对象的原型上查找,甚至是到这个对象的原型的原型上查找,这样一层一层向上查找,直到找到匹配的属性或者是到达原型链的顶端。

这些属性和方法是定义在Object的构造函数上的prototype属性上。而并不是实例对象本身。

比如:函数可以有属性,每一个函数都有一个特殊的属性叫做原型prototype,这个原型prototype是一个对象,也就是原型对象。

原型对象上自带一个属性constructor,这个属性指向函数。

原型链

原型对象也可能拥有原型,并且从中集成方法和属性,一层一层、以此类推。这种关系就是原型链,这就是为什么任何一个对象会拥有定义在其他对象中的属性和方法的原因。

在对象实例和它们的构造函数之间建立起一个链接,通过_proto_属性访问原型对象的原型对象,prototype属性访问到实例的构造函数。

总结:

  1. 一切对象都是集成于Object对象,Object对象直接直接继承根源对象null
  2. 一切函数对象,都是继承于Function对象
  3. Object对象直接继承于Function对象
  4. Function对象的__proto__会指向自己的原型对象,最终还是继承于Object对象。

这就是关于原型和原型链的笔记,希望对你有所帮助!

相关推荐
加个鸡腿儿10 小时前
锚点跳转-附带CSS样式 & 阻止页面刷新技术方案
前端·javascript·css
❀͜͡傀儡师10 小时前
JDK 25 新特性速览
java·开发语言
兮动人10 小时前
主流JDK版本支持时间
java·开发语言·主流jdk版本支持时间
深蓝电商API10 小时前
0 基础入门爬虫:Python+requests 环境搭建保姆级教程
开发语言·爬虫·python
2501_9307077811 小时前
使用C#代码在 Word 文档中查找并替换文本
开发语言·c#·word
程序猿_极客11 小时前
【期末网页设计作业】HTML+CSS+JS 美食分享主题网站设计与实现(附源码)
javascript·css·html
MediaTea11 小时前
Python 第三方库:PyTorch(动态计算图的深度学习框架)
开发语言·人工智能·pytorch·python·深度学习
xun_xing11 小时前
基于Nextjs15的学习手记
前端·javascript·react.js
Boop_wu11 小时前
[Java EE] 多线程 -- 初阶(3)
java·开发语言
2301_7951672011 小时前
玩转Rust高级应用 如何理解 Rust 实现免疫数据竞争的关键是Send 和 Sync 这两个 trait
开发语言·算法·rust