面向对象(OOP)之原型对象和原型链(js面向对象的底层处理机制)

首先记住三句话

1.每一个类(函数)都具备prototype,并且属性值是一个对象
2.prototype上有内置的属性constructor,值是类(函数)本身
3.每一个对象都具备__proto__,属性值是当前所属类的prototype

类和构造函数是一个概念

接下来,详细讲解一下这三句话
js面向对象的底层处理机制
1 每一个函数数据类型都自带一个属性prototype(原型对象),属性值是一个对象,并且prototype中自带一个属性constructor,属性值是当前函数本身。
此处有例外:箭头函数没有prototype,Function.prototype不是对象。
其中prototype只对内置类(内置构造函数)和构造函数(自定义类)有用,普通函数虽然有prototype,但是没啥用。
适用于:内置类(内置构造函数)、构造函数(自定义类)、普通函数
2.每一个对象数据类型,都天生自带一个属性__proto__,叫做隐式原型(prototype被叫做显式原型),__proto__的另外一个名字叫做原型链。属性值指向构造函数的原型对象prototype。
适用于:普通对象(日期对象,正则对象,数组对象…)/prototype(原型对象)/实例对象/函数
所有的对象都是Object这个内置类的实例,其__proto__都指向Object.prototype

Object的__proto__=null
解释:因为Object.prototype也是Object的实例,所以Object. __proto__要指向的话,就只能指向自己,这就失去了意义,所以基类的原型链为null。

接下来用一个例子画图来囊括以上所有的知识点

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值