填坑-十万个为什么?(24)
简介:很多概念不清或忘记,重新构建自己的知识体系。每天问自己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)相关推荐
- 填坑-十万个为什么?(22)
简介:很多概念不清或忘记,重新构建自己的知识体系.每天问自己1~多个问题.我是菜鸟 成为大神之路! 1.认识exportLink export export语句用于在创建JavaScript模块时,从 ...
- 填坑-十万个为什么?(13)
简介:很多概念不清或忘记,重新构建自己的知识体系.每天问自己1~多个问题.我是菜鸟 成为大神之路! 1. 经典面试题 for(var i=0;i<=3;i++){ setTimeout(func ...
- 填坑-十万个为什么?(18)
简介:很多概念不清或忘记,重新构建自己的知识体系.每天问自己1~多个问题.我是菜鸟 成为大神之路! 1.学习Promise? Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返 ...
- java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得
该文章出自:http://www.cnblogs.com/hucn/p/3572384.html 分析工具:http://www.blogjava.net/jjshcc/archive/2014/03 ...
- 卷积神经网络「失陷」,CoordConv来填坑
卷积神经网络「失陷」,CoordConv来填坑 作者:Rosanne Liu等 卷积神经网络拥有权重共享.局部连接和平移等变性等非常优秀的属性,使其在多种视觉任务上取得了极大成功.但在涉及坐标建模的任 ...
- 关于Echarts的填坑之旅
正如标题所说,这是Echarts的一遍填坑,如果你是一些echart的配置的话可以阅读 http://echarts.baidu.com/opti...的官网配置信息.今天我想给大家分享的是一些我前段 ...
- 开发工具总结(2)之全面总结Android Studio2.X的填坑指南
前言:好多 Android 开发者都在说Android Studio太坑了,老是出错,导致开发进度变慢,出错了又不知道怎么办,网上去查各种解决方案五花八门,有些可以解决问题,有些就是转来转去的写的很粗 ...
- 填坑-关于SysTick定时器
目录 01.坑的由来 02.填坑 03.修改代码验证 04.总结 本文主要来填坑,更正之前文章的错误.也进一步加深了我对SysTick定时器的理解,希望对你有帮助. 01.坑的由来 在之前的推文中&l ...
- Windows环境下安装React Native开发环境----记一次填坑过程
前言 集成React Native开发环境遇到各个坑,调试了很久出现过找不到设备,百度上个别人的资料有误被绕来绕去耽误了很多时间,下载慢等待时间过长等问题,最后多方查阅资料,电脑重启等操作终于部署好了 ...
最新文章
- jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中
- 路痴的单身小菡 BFS求最短路径+DFS求路径数
- c#获取autocad安装位置_AutoCAD自动切换输入法插件
- c# 相对路径的一些文献
- Android5.0新控件
- SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数
- linux系统中怎么复制,linux下如何屏幕拷贝?
- WPF Image Binding Uri Source 失败解决办法
- 处理网页上的字符溢出的方法
- ELK收集tomcat访问日志并存取mysql数据库案例
- 开发板运行可执行文件提示not found的问题
- 互联网应用的两种工作模式:客户/服务器模式与P2P模式
- MyBatis 遇到 Error updating database.问题
- Oracle数据库学习--2个不错的网站
- NYOJ118 修路方案
- java架构师年薪_Java架构师一般的薪资是多少?高不高?
- GIT回顾(持续更新)
- 如何获得CSDN积分(转)
- 十余年软件开发经历,经验总结和程序一览(涉及Socket、WPF、vc++、CAD、图像、GIS)
- Rust简短笔记:原始指针(Raw Pointer)