__proto__对比prototype

实例对象没有 prototype 属性 ,只有函数才有 prototype 属性。

实例对象上有的是 __proto__ ,指向其构造函数的 prototype

详细解释

1. 函数对象

函数在 JavaScript 中是一等对象,但它们有一个特别的属性:

javascript 复制代码
function Foo() {}
console.log(Foo.prototype); 
// { constructor: Foo, __proto__: Object.prototype }
  • Foo.prototype 是一个对象,会成为由 new Foo() 创建的实例的原型。
  • 所以 prototype函数特有的属性

2. 实例对象

实例通过 new 创建时,会把自己的 __proto__ 指向构造函数的 prototype

javascript 复制代码
function Foo() {}
const f = new Foo();

console.log(f.__proto__ === Foo.prototype); // true
console.log(f.prototype); // undefined ❌
  • f(实例)没有 prototype 属性。
  • f.__proto__ 指向 Foo.prototype

3. 一张关系图

scss 复制代码
 Foo (函数)
   │
   ├── prototype  ----> { constructor: Foo, ... }
   │                        ▲
   │                        │
   └─── new Foo() ---> f.__proto__
相关推荐
北辰alk11 小时前
2025:当Vibe Coding成为我的创意画布——一名前端工程师的AI元年记
前端·trae
jump_jump11 小时前
SaaS 时代已死,SaaS 时代已来
前端·后端·架构
Yanni4Night11 小时前
Parcel 作者:如何用静态Hermes把JavaScript编译成C语言
前端·javascript·rust
hellokatewj11 小时前
前端 Promise 全解:从原理到面试
前端
天意pt11 小时前
Blog-SSR 系统操作手册(v1.0.0)
前端·vue.js·redis·mysql·docker·node.js·express
遗憾随她而去.11 小时前
Webpack5 高级篇(一)
前端
疯狂踩坑人12 小时前
【React 19 尝鲜】第一篇:use和useActionState
前端·react.js
毕设源码-邱学长12 小时前
【开题答辩全过程】以 基于VUE的打车系统的设计与实现为例,包含答辩的问题和答案
前端·javascript·vue.js
用户390513321928812 小时前
JS判断空值只知道“||”?不如来试试这个操作符
前端·javascript
海云前端112 小时前
前端面试必问 asyncawait 到底要不要加 trycatch 90% 人踩坑 求职加分技巧揭秘
前端