简介:很多概念不清或忘记,重新构建自己的知识体系。每天问自己1~多个问题。我是菜鸟 成为大神之路!

1.Es6 Class通过extends关键字实现继承 Link Class & extends & super

class ColorPoint extends Point {constructor(x, y, color) {super(x, y); // 调用父类的constructor(x, y)this.color = color;}toString() {return this.color + ' ' + super.toString(); // 调用父类的toString()}
}
复制代码

①上面代码中,constructor方法和toString方法之中,都出现了super关键字,它在这里表示父类的构造函数,用来新建父类的this对象。

②子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类自己的this对象,必须先通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法,然后再对其进行加工,加上子类自己的实例属性和方法。如果不调用super方法,子类就得不到this对象。

③在子类的构造函数中,只有调用super之后,才可以使用this关键字,否则会报错。这是因为子类实例的构建,基于父类实例,只有super方法才能调用父类实例。

④父类的静态方法,也会被子类继承

2.基于Mixin模式实现多继承 Link Mixin

Mixin 指的是多个对象合成一个新的对象,新对象具有各个组成成员的接口

将多个类的接口“混入”(mix in)另一个类

function mix(...mixins) {class Mix {}for (let mixin of mixins) {copyProperties(Mix.prototype, mixin); // 拷贝实例属性copyProperties(Mix.prototype, Reflect.getPrototypeOf(mixin)); // 拷贝原型属性}return Mix;
}function copyProperties(target, source) {for (let key of Reflect.ownKeys(source)) { //Reflect.ownKeys()方法返回一个由目标对象自身的属性键组成的数组if ( key !== "constructor"&& key !== "prototype"&& key !== "name") {let desc = Object.getOwnPropertyDescriptor(source, key);//方法返回指定对象上一个自有属性对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)Object.defineProperty(target, key, desc);//方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。}}
}
复制代码

转载于:https://juejin.im/post/5c3bdaad6fb9a049a57122f4

填坑-十万个为什么?(24)相关推荐

  1. 填坑-十万个为什么?(22)

    简介:很多概念不清或忘记,重新构建自己的知识体系.每天问自己1~多个问题.我是菜鸟 成为大神之路! 1.认识exportLink export export语句用于在创建JavaScript模块时,从 ...

  2. 填坑-十万个为什么?(13)

    简介:很多概念不清或忘记,重新构建自己的知识体系.每天问自己1~多个问题.我是菜鸟 成为大神之路! 1. 经典面试题 for(var i=0;i<=3;i++){ setTimeout(func ...

  3. 填坑-十万个为什么?(18)

    简介:很多概念不清或忘记,重新构建自己的知识体系.每天问自己1~多个问题.我是菜鸟 成为大神之路! 1.学习Promise? Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返 ...

  4. java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得

    该文章出自:http://www.cnblogs.com/hucn/p/3572384.html 分析工具:http://www.blogjava.net/jjshcc/archive/2014/03 ...

  5. 卷积神经网络「失陷」,CoordConv来填坑

    卷积神经网络「失陷」,CoordConv来填坑 作者:Rosanne Liu等 卷积神经网络拥有权重共享.局部连接和平移等变性等非常优秀的属性,使其在多种视觉任务上取得了极大成功.但在涉及坐标建模的任 ...

  6. 关于Echarts的填坑之旅

    正如标题所说,这是Echarts的一遍填坑,如果你是一些echart的配置的话可以阅读 http://echarts.baidu.com/opti...的官网配置信息.今天我想给大家分享的是一些我前段 ...

  7. 开发工具总结(2)之全面总结Android Studio2.X的填坑指南

    前言:好多 Android 开发者都在说Android Studio太坑了,老是出错,导致开发进度变慢,出错了又不知道怎么办,网上去查各种解决方案五花八门,有些可以解决问题,有些就是转来转去的写的很粗 ...

  8. 填坑-关于SysTick定时器

    目录 01.坑的由来 02.填坑 03.修改代码验证 04.总结 本文主要来填坑,更正之前文章的错误.也进一步加深了我对SysTick定时器的理解,希望对你有帮助. 01.坑的由来 在之前的推文中&l ...

  9. Windows环境下安装React Native开发环境----记一次填坑过程

    前言 集成React Native开发环境遇到各个坑,调试了很久出现过找不到设备,百度上个别人的资料有误被绕来绕去耽误了很多时间,下载慢等待时间过长等问题,最后多方查阅资料,电脑重启等操作终于部署好了 ...

最新文章

  1. jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中
  2. 路痴的单身小菡 BFS求最短路径+DFS求路径数
  3. c#获取autocad安装位置_AutoCAD自动切换输入法插件
  4. c# 相对路径的一些文献
  5. Android5.0新控件
  6. SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数
  7. linux系统中怎么复制,linux下如何屏幕拷贝?
  8. WPF Image Binding Uri Source 失败解决办法
  9. 处理网页上的字符溢出的方法
  10. ELK收集tomcat访问日志并存取mysql数据库案例
  11. 开发板运行可执行文件提示not found的问题
  12. 互联网应用的两种工作模式:客户/服务器模式与P2P模式
  13. MyBatis 遇到 Error updating database.问题
  14. Oracle数据库学习--2个不错的网站
  15. NYOJ118 修路方案
  16. java架构师年薪_Java架构师一般的薪资是多少?高不高?
  17. GIT回顾(持续更新)
  18. 如何获得CSDN积分(转)
  19. 十余年软件开发经历,经验总结和程序一览(涉及Socket、WPF、vc++、CAD、图像、GIS)
  20. Rust简短笔记:原始指针(Raw Pointer)

热门文章

  1. 算法-电话号码的字母组合
  2. c++几种STL比较
  3. muduo之ThreadLocal
  4. 构造函数不可以是虚函数;析构函数可以是虚函数,也可以是纯虚函数。
  5. H3C 交换机升级说明
  6. python urllib的用法实例
  7. JavaScript学习 九、事件
  8. MD5SHA加密util类(Java)
  9. SQL Sever 基本命令案例
  10. Raspberry Pi 3B 安装Miniconda