js 四句话搞懂原型和原型链
一.概念
当试图查找实例对象的某个属性时,不仅仅会在实例类上查找,还会在这个类的父亲爷爷祖爷爷,层层向上,直到查找到第一个名称相同的属性或者到达一个空的原型,这个就是javascript的原型链机制。其中每一层的原型所构成的这条查找链就是原型链。
三个类比: 资产=prototype ,隐式资产指针__proto__=父亲的资产 , 钱 = 属性/方法function
四句话:
- 查找原型链就是沿着指针__proto__ 找祖辈的要钱的过程
- 一个类的资产 = 自己的钱 + 隐式资产(父亲的资产)
换算:类.prototype = 自己所有方法(包含构造方法+其他方法)+ proto(父类的prototype) - new 出来的实例对象,想成未成年没有自己的prototype资产,只能沿着__proto__找隐式资产 = 类(父亲)的资产
换算: 实例对象.proto = 类.prototype - 万物起源于object,起源的隐式资产 为null空。
上面四句话翻译成js行话:
1.查找原型链就是找祖辈要属性/方法的过程
2.类.prototype = 自己所有方法(包含构造方法+其他方法)+ proto(父类的prototype)
3. 实例对象.proto = 类.prototype
4. 万物皆object的意思:所有的类的祖籍源头都是Object
二. 看代码
例子:Teacher 类 ==> 继承 Person 类 ==> 继承 Object 类 ==> null
class Person {constructor(name) {this.name = name;}drink(){console.log(this.name,)}
}class Teacher extends Person{constructor(name,sub) {super(name)this.sub = sub}drink(){console.log(this.name,'教授课程:',this.sub)}
}let t = new Teacher("李老师","化学")// new出来的实例 t 未成年,他只有隐资产__proto_ = 父亲Teacher的资产
console.log(t.__proto__=== Teacher.prototype)console.log(t.__proto__.__proto__.__proto__.__proto__ === null)
// 怎么理解最后为null : 婴儿是t, Teacher类是父亲,Person类是爷爷,Object 祖爷爷
// 1. t.__proto__ ,婴儿t的隐式资产是父亲的资产,Teacher.prototype
// 2. (t.__proto__). __proto__ 父亲Teacher的隐式资产是爷爷的资产,Person.prototype
// 3. (t.__proto__. __proto__). __proto__ 爷爷Person的隐式资产是祖爷爷的资产,Object .prototype
// 4. (t.__proto__. __proto__. __proto__) .__proto__ 祖爷爷Object白手起家,没有隐式资产 为空null
js 四句话搞懂原型和原型链相关推荐
- 【言简意赅】四句话搞懂第一范式,第二范式,第三范式,以及BCNF
关于各种范式的定义,相信大家看早已看的厌烦, 这里就用最简单粗暴的方式讲解我们如何理解这几种范式. 注:详细定义见书或百度百科, 我只负责让各位读者理解内核. 第一范式:列不能再分,不能重复. 第二范 ...
- 几句话搞懂朴素贝叶斯法(简单理解和应用)
几句话搞懂朴素贝叶斯法(简单理解和应用) 适合如我这般完全忘记数学知识的小白,大佬可绕行 贝叶斯定理 先验概率 条件概率 极大似然估计 贝叶斯估计 公式解读:贝叶斯公式.极大似然估计.贝叶斯公式变形 ...
- 四句话看懂等保2.0测评结果
等保2.0自2019年12月1日开始正式实施,其中测评结果由1.0时代的符合.基本符合.不符合改为2.0时代的优.良.中.差四个等级,测评及格线也由原来的60分提高到了70分. 如何快速看懂等保2.0 ...
- 牛逼,三句话搞懂 Redis 缓存穿透、击穿、雪崩!
前言 如何有效的理解并且区分 Reids 穿透.击穿和雪崩之间的区别,一直以来都挺困扰我的.特别是穿透和击穿,过一段时间就稀里糊涂的分不清了. 为了有效的帮助笔者自己,以及拥有同样烦恼的朋友们区分这三 ...
- 几句话搞懂什么是batch
工作实例 最后,让我们用一个小例子来说明这一点. 假设您有一个包含200个样本(数据行)的数据集,并且您选择的Batch大小为5和1,000个Epoch. 这意味着数据集将分为40个Batch,每个B ...
- 1句话搞明白啥是码元、啥是比特率、啥是波特率
1句话搞明白啥是码元.啥是比特率.啥是波特率 一个码元就是一个脉冲信号,一个脉冲信号有可能携带1bit数据,也有可能携带2bit数据.4bit数据!你发送一个脉冲信号,如果就可以携带4bit数据,肯定 ...
- 虚伪的人,喜欢说这四句话,不要深交
与人交往,需要谨慎,一定要看清对方的人品.选择和什么样的人交往,对我们自身的影响是非常大的,交一个人品好的人,有可能就会让自己受益终生:交一个人品不好的人,就有可能会给自己带来一些不利,甚至是伤害. ...
- 四句话解决const赋值问题
有修饰自己的const就不能再被赋值,且一定要初始化(reference同样) 等号右边修饰自己的const在赋值时会被忽略 指针的类型有const type(不能用指针修改所指内容)和 type(可 ...
- 看了Lby的博客 我也总结一下我学到的面向对象 主要归纳就是文章的最后四句话...
# 面向对象 - 它是一个编程思想 + 当我需要完成一个业务逻辑的时候 先写一个构造函数 + 这个构造函数可以创建一个对象(这个对象可以完成业务逻辑) + 使用构造函数去 new 一个对象 + 让对象 ...
最新文章
- spring实现listener(转)
- 面试中又被问到Redis如何实现抢购,赶快代码实现一波吧!
- Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)
- Javascript权威指南学习笔记一:数据类型
- Java 8 CompletableFuture 教程 1
- 唯品会2017年双11大促技术保障实践,全域提供25万QPS服务能力
- 什么是A记录,子域名,CNAME别名,MX记录,TXT记录,SRV 记录,泛域名(泛解析),域名转向,域名绑定...
- canvas绘制字体-属性设置2
- 出现(n+1)/2次的数 — 给n个数字,求至少出现(N+1)/2次的那个数字?
- c#简易学生信息管理系统
- 单片机学习05_单片机软件架构
- python实现杨辉三角
- 用ESP32打造一个物联网红外测温打卡机/春节结束急着上班?哒咩,再努力奋斗也要先测体温
- 华为路由器NAT经典配置
- nofollow、noopener和noreferrer标签的区别
- 传统数仓如何转型大数据
- 单例模式 Windows下防止多开简介
- 5G网下通过网络编码增强转发策略的NDN物联网内容分发模型
- 编译报错:error: ro.build.fingerprint cannot exceed 91 bytes
- unity, Graphics.Blit (null, null, mat,0);
热门文章
- 终于搭建成功Xamarin for Android平台
- android 画 月牙曲线,几何画板如何给月牙图形填充颜色
- k8s之pause容器
- “傻瓜”不是瓜,“肮脏”本不脏
- 基于STM32 GPIO模拟8080时序操作ILI9341-学习笔记12
- 易观千帆 | 2023年1月银行APP月活跃用户规模盘点
- 完成千万元A轮融资,小象生活能否成为折扣界的“永辉”?
- Elasticsearch搜索引擎第十一篇-Suggest查询建议
- 高一学生计算机学情分析,高一学生学情分析——李涛
- 加密信息:你休想偷看我发的悄悄话