当前位置:网站首页>原型对象及原型链的理解
原型对象及原型链的理解
2022-08-04 05:26:00 【fcc627】
文章目录
一、什么是构造函数的原型对象
1.什么是构造函数
构造函数是一种特殊的函数,要用来初始化对象,即为对象成员变量赋初始值,它总是和new运算符一起使用,我们可以将对象中的一些公共的属性和方法抽取出来,然后封装到这个函数里。
在构造函数中,其属性和方法我们称为成员。同时根据添加的方式不同,成员又分为:实例成员和静态成员。
静态成员:在构造函数本身上添加的成员【静态成员只能通过构造函数来访问,不能通过实例化对象访问】
实例成员:就是构造函数内部通过this添加的成员,uname,age,sing就是实例成员【实例成员只能通过实例化对象来访问,不可以通过构造函数类访问】
2.构造函数原型:prototype
其作用就是共享方法。
【一般我们的公共属性和定义到构造函数里面,而公共方法定义在原型对象身上。】
二、什么是对象的原型对象?
每一个对象都有一个属性__proto__指向构造函数的prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,是以为对象有__proto__的存在.
- __proto__对象原型和原型对象prototype是等价的
- __proto__对象原型的意义在于对象的查找机制提供了一个方向,或者说一个路线,但它是一个非标准属性,因此在开发过程中不可以使用这个属性,他只是内部指向原型对象的prototype
实例对象与原型对象的关系
三、什么是原型对象的原型对象
原型对象的原型对象:原型对象本身也是一个对象,所以它也有自己的原型对象
(1)获取原型对象的原型对象:构造方法名.prototype._ proto _
(2)获取原型对象的原型对象的构造方法: 构造方法名.prototype._ proto _.constructor
四、如何通过原型链来实现类的继承?
什么是原型链?
每个对象都可以有一个原型_proto_,这个原型还可以有它自己的原型,以此类推,形成一个原型链。查找特定属性的时候,我们先去这个对象里去找, 如果没有的话就去它的原型对象里面去,如果还是没有的话再去向原型对象的原型对象里去寻找… 这个操作被委托在整个原型链上, 这个就是我们说的原型链了。
原型链结构图
ES5通过构造函数
//通过构造函数创建父类
function father(name) {
// 对象属性
this.name = name;
}
//父类的原型方法
father.prototype.getName=function(name){
return '我的名字叫:' + this.name;
}
//子类
function Child(name){
father.call(this,name)
}
Child.prototype=new father();
var z = new Child("张三");
console.log(z.getName(name));
ES6通过class方法
//通过class方法创建父类
class point2{
constructor(name,age){
this.name=name ;
this.age=age;
}
}
//创建子类并继承父类
class sexpoint2 extends point2{
constructor(name,age,sex){
// 在子类型构造函数中通过super调用父类型的构造函数
super(name,age);
this.sex=sex
}
//构造函数上的原型方法
toSex(){
return "名字:"+this.name+" 年龄:"+this.age+" 性别:"+this.sex
}
}
let sext=new sexpoint2("张三",18,"男")
console.log(sext.toSex());
console.log(sext.name);
console.log(sext.age);
console.log(sext.sex)
边栏推荐
- npm安装依赖报错npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfonpm ERR! errno ENOTFOUND
- 嵌入式系统驱动初级【4】——字符设备驱动基础下_并发控制
- TSF微服务治理实战系列(一)——治理蓝图
- Gartner 权威预测未来4年网络安全的8大发展趋势
- Cannot read properties of null (reading 'insertBefore')
- 【论文阅读笔记】无监督行人重识别中的采样策略
- webrtc中视频采集实现分析(一) 采集及图像处理接口封装
- 自动化测试的成本高效果差,那么自动化测试的意义在哪呢?
- Embedded system driver primary [4] - under the basis of character device driver _ concurrency control
- Swoole学习(二)
猜你喜欢
随机推荐
关于 for in与for of 的差别以及如何使用
Embedded system driver primary [3] - _IO model in character device driver foundation
4.1 JdbcTemplate for declarative transactions
7.15 Day21---MySQL----索引
EntityComponentSystemSamples学习笔记
Plus版SBOM:流水线物料清单PBOM
实现登录密码混合动态因子,且动态因子隐式
8.03 Day34---BaseMapper query statement usage
LCP 17. 速算机器人
Unity DOTS学习教程汇总
关于let var 和const的区别以及使用
Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法
【Matlab仿真】:一带电量为q的电荷以速度v运动,求运动电荷产生磁感应强度
canal实现mysql数据同步
Code Refactoring: For Unit Testing
箭头函数的使用
自动化测试的成本高效果差,那么自动化测试的意义在哪呢?
音视频相关基础知识与FFmpeg介绍
梳理CamStyle、PTGAN、SPGAN、StarGAN
OpenRefine开源数据清洗软件的GREL语言