原型与原型链的关系梳理

先下结论:

每个实例对象上的__proto__,指向这个构造函数的构造器,然后这个构造函数的构造器prototype上有个__proto__,它指向的是Object上的prototypeObjectprototype上面个__proto__属性指向为null,这样的一层层关系就形成的原型链

prototype 是什么

prototype原型也叫原型对象是函数上的一个属性

js 复制代码
function p() { }
console.dir(p)

它是函数上的一个属性并且是个对象类型的属性

js 复制代码
 function Person(name) {
  this.name = name
}
const p1 = new Person()
console.log(p1.prototype) 

实例对象上没有这个属性

proto 是什么

__proto__隐式原型是对象上的属性

js 复制代码
 function Person(name) {
  this.name = name
}
const p1 = new Person()   
console.log(p1.__proto__) 
js 复制代码
function p() { }
console.dir(p)

为什么函数上也有这属性,__proto__不是对象上的属性吗?答:在JavaScript中,函数也是对象

验证原型链关系

js 复制代码
function Person(name) {
  this.name = name
}
const p1 = new Person()

console.log('p1.__proto__ === Person.prototype', p1.__proto__ === Person.prototype) // true
console.log('Person.prototype.__proto__ === Object.prototype', Person.prototype.__proto__ === Object.prototype) // true
console.log('Object.prototype.__proto__', Object.prototype.__proto__) // null

参考文章

相关推荐
J不A秃V头A31 分钟前
Vue3:编写一个插件(进阶)
前端·vue.js
司篂篂1 小时前
axios二次封装
前端·javascript·vue.js
姚*鸿的博客1 小时前
pinia在vue3中的使用
前端·javascript·vue.js
宇文仲竹2 小时前
edge 插件 iframe 读取
前端·edge
Kika写代码2 小时前
【基于轻量型架构的WEB开发】【章节作业】
前端·oracle·架构
天下无贼!3 小时前
2024年最新版Vue3学习笔记
前端·vue.js·笔记·学习·vue
Jiaberrr3 小时前
JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)
前端·javascript·tree·树形·过滤筛选
赵啸林3 小时前
npm发布插件超级简单版
前端·npm·node.js
罔闻_spider4 小时前
爬虫----webpack
前端·爬虫·webpack
吱吱鼠叔4 小时前
MATLAB数据文件读写:1.格式化读写文件
前端·数据库·matlab