__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__
相关推荐
是一碗螺丝粉10 小时前
React Native 运行时深度解析
前端·react native·react.js
Jing_Rainbow10 小时前
【前端三剑客-9 /Lesson17(2025-11-01)】CSS 盒子模型详解:从标准盒模型到怪异(IE)盒模型📦
前端·css·前端框架
爱泡脚的鸡腿10 小时前
uni-app D6 实战(小兔鲜)
前端·vue.js
青年优品前端团队10 小时前
🚀 不仅是工具库,更是国内前端开发的“瑞士军刀” —— @qnvip/core
前端
北极糊的狐10 小时前
Vue3 中父子组件传参是组件通信的核心场景,需遵循「父传子靠 Props,子传父靠自定义事件」的原则,以下是资料总结
前端·javascript·vue.js
看到我请叫我铁锤11 小时前
vue3中THINGJS初始化步骤
前端·javascript·vue.js·3d
q***252111 小时前
SpringMVC 请求参数接收
前端·javascript·算法
q***333711 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
烛阴11 小时前
从`new()`到`.DoSomething()`:一篇讲透C#方法与构造函数的终极指南
前端·c#
还债大湿兄11 小时前
阿里通义千问调用图像大模型生成轮动漫风格 python调用
开发语言·前端·python