【金秋打卡】第4天 从函数到函数式编程之路
标签:
JavaScript
课程名称:破解JavaScript高级玩法
课程章节:第6章 从函数到函数式编程之路
主讲老师:Cloud
课程内容:
今天学习的内容包括:
6-6 深入浅出原型链——原型链基本知识大回顾。
课程收获:
原型是“借”来的
- 原型不是JavaScript首创
- 借鉴Self语言,基于原型( prototype)的实现继承机制
原型的解决了什么问题
- 共享数据,减少空间占用,节省内存
- 实现继承
原型三件套
- prototype
- constructor
- proto
prototype
- 无处不在
- 本质是一个普通对象
constructor
- 实例的构造函数
proto
- proto : _proto_属性是一个访问器属性(一个getter函数和一个setter函数),暴露了通过它访问的对象的内部[Prototype]
- 构造函数的原型prototype
- 推荐使用:Object.getPrototypeof
谁都有谁
- prototype属性本质是一个普通对象
- 普通对象有_proto_属性
- 普通函数或者class既有prototype属性,又有__proto__属性
小结
prototype
- 函数或则class的共享属性
- 作用:节约内存、实现继承
- 本质是一个普通的对象
constructor
- 实例对象的构造函数
- 可以被更改
- 普通对象,其在原型上
proto
- 构造函数的原型
- Object.prototype.proto == null
- 基于此形成原型链
知识点总结
- 函数最终的本质上是对象
- 普通对象都有constructor,指向自己的构造函数,可以被改变,不一样安全
- 函数和class的prototype.constructor指向函数自身
- Function,Object,Regexp, Error等本质是函数,Function.constructor=== Function
- 普通对象都有__proto__,其等于构造函数的原型,推荐使用Object.getPrototypeOf
- 所有普通函数的构造函数都是Function,ES6有出现的函数种类AsyncFunction,GeneratorFunction
- 原型链的尽头是null: Object.prototype.proto= null
- Function._proto__指向Function.prototype
趣味知识
- 普通对象的二次__proto__是null
- 普通函数的三次__proto__是null
- 如果是经历过n次显式继承,被实例化的普通对象,n+3层的__proto__是null
纯净对象
- 什么是纯净对象,就是干干净净的对象。没有原型。
- 怎么创建:Object.creat(null)
优点
- 空间上,少了原型链的信息,必然节约空间。
- 时间上,没有原型链,查找一步到位。
今天 学习了 深入浅出原型链,再次熟悉了原型链相关的知识,学习就是不断学习,重复学习。对自己说一句,加油😀~
坚持打卡,坚持学习!明天见💪~
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦