__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__
相关推荐
晷龙烬4 分钟前
Vue的“小外挂”:玩转自定义指令!
前端·javascript·vue.js
小徐不会敲代码~5 分钟前
Vue3 学习 4
前端·vue.js·学习
小小前端要继续努力6 分钟前
边缘函数 (Edge Functions)
前端·edge
海市公约8 分钟前
CSS 核心知识点精讲:基础概念、样式规则与布局技巧
前端·css·盒子模型·选择器·网页布局·网页样式设计
蜗牛攻城狮10 分钟前
Vite 项目中 `node_modules/.vite/deps` 文件夹详解
前端·vite·构建工具
elangyipi12311 分钟前
使用CSS Contain 优化你的页面(重排和重绘)
前端·css
小小前端要继续努力13 分钟前
Islands Architecture(岛屿架构)
前端·edge
Liu.77417 分钟前
vue使用lodop控件打印
前端·javascript·vue.js
OpenTiny社区23 分钟前
TinySearchBox 综合搜索组件重磅更新:实现 Vue 2 和 Vue 3 双版本适配!
前端·javascript·vue.js
GDAL30 分钟前
HTML 实现登录状态记录 深入全面讲解教程
前端·html·登录验证