原型与原型链的关系梳理

先下结论:

每个实例对象上的__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

参考文章

相关推荐
秋田君2 分钟前
前端工程化部署入门:Windows + Nginx 实现多项目独立托管与跨域解决方案
前端·windows·nginx
江城开朗的豌豆27 分钟前
阿里邮件下载器使用说明
前端
半兽先生31 分钟前
Web 项目地图选型指南:从 Leaflet 到 MapTalks,如何选择合适的地图引擎?
前端
hssfscv1 小时前
Javaweb 学习笔记——html+css
前端·笔记·学习
Mr.Jessy1 小时前
JavaScript高级:深浅拷贝、异常处理、防抖及节流
开发语言·前端·javascript·学习
唐叔在学习1 小时前
30s让ai编写「跳过外链中转页」的油猴脚本
前端·javascript
酸菜土狗1 小时前
🔥 纯 JS 实现 SQL 字段智能解析工具类,前端也能玩转 SQL 解析
前端
wo不是黄蓉1 小时前
脚手架步骤流程
前端
我这一生如履薄冰~1 小时前
css属性pointer-events: none
前端·css