原型链神图

 


一、神图1

image

二、神图2

image

三、构造函数、对象及其原型

image

image

四、用来验证自己想法的小代码

let arr = []
function* f () {
  /* t    */    yield arr.__proto__ === Array.prototype
  /* t    */    yield Array.__proto__ === Function.prototype
  /*    f */    yield arr instanceof Function
  /*t     */    yield Object instanceof Function
  /*t     */    yield Object.__proto__ === Function.prototype
  // 所有的 [[Prototype]] 都是 Object 实例
  // 所以原型链是怎么回事?一个arr实例怎么通过原型链找到 Array 并找到 Function 最后找到 Object?
  // arr的原型链中没有Array也没有Function,但是可以通过constructor找到Array再通过原型链找Object
}
for (const x of f()) {
  console.log(x);
}

五、总结

对象的父母都是函数(constructor),不像经典OOP语言中,对象的父母是类
继承看的是原型链上各个[[Prototype]]即原型对象之间的关系
原型都是对象,原型的“父类”都是 Object.Prototype

posted @   dou_fu_gan  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示

目录导航