ES6学习笔记(五):Class和Module
Class
Class
只是一个语法糖,其功能用es5也能实现,但是比es5更符合类的期待
定义:
constructor代表构造方法,而this指向new 生成的实例
定义类方法时,可以不使用function
注意:类的内部所有定义的方法,都是不可枚举的(non-enumerable)。
//定义类
class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}
使用
new Point(x,y)
constructor
类的默认方法,new生成对象实例的时候执行的就是这个方法
一个类必须有constructor方法
constructor默认返回实例对象
Class不存在变量提升
new Foo(); // ReferenceError
class Foo {}
Class的继承
extends关键字
class ColorPoint extends Point {}
注意:
1.子类必须调用super,子类本身没有this,super是父类的构造函数,调用super,子类才有this
这是因为子类实例的构建,是基于对父类实例加工,只有super方法才能返回父类实例。
类的prototype属性和__proto__属性
1.子类的__proto__指向父类
2.子类的prototype的__proto__指向父类的.prototype
class A {
}
class B extends A {
}
B.__proto__ === A // true
B.prototype.__proto__ === A.prototype // true
super关键字
1.调用super方法时,super代表父类的constructor方法
2.作为属性super调用时,super代表父类本身
ES6改变了Object构造函数的行为,一旦发现Object方法不是通过new Object()这种形式调用,ES6规定Object构造函数会忽略参数。
getter和setter
Generate方法
直接在方法属性前加*
静态方法static
一个方法前加static,则该方法不会被继承,而是通过类来直接调用
父类的静态方法,可以被子类继承。
静态方法也可以从super上调用,因为super指向父类本身
注意:Class内部只有静态方法,没有静态属性。
new.target
(在构造函数中)返回new命令作用于的那个构造函数。
mixin模式
???
Module
严格模式
es6的模块自动使用严格模式
export
as
通常情况下,export输出的变量就是本来的名字,但是可以使用as关键字重命名。
function v1() { ... }
function v2() { ... }
export {
  v1 as streamV1,
  v2 as streamV2,
  v2 as streamLatestVersion
};
export命令必须处于模块顶层。
export命令规定的是对外的接口。
import
import具有变量提升效果,会提升到模块头部执行
default
import和export的默认变量名
es6模块加载与CommonJS
CommonJS模块输出的是一个值的拷贝,而ES6模块输出的是值的引用。
CommonJS一旦输出一个值,模块内部的变化就影响不到这个值。
ES6模块原始值变了,import输入的值也会跟着变。
ES6学习笔记(五):Class和Module的更多相关文章
- ES6学习笔记<五> Module的操作——import、export、as
		import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ... 
- ES6学习笔记五(promise异步)
		知识点1:rosolve是执行下一步then() // Promise { let ajax=function(){ console.log('执行2'); return new Promise(fu ... 
- ES6学习笔记五:Promise异步任务
		一:Promise对象 Promise对象代表一个异步操作,有三种状态:Pending(进行中).Resolved(已完成,又称 Fulfilled)和Rejected(已失败). 二:创建与使用 v ... 
- ES6学习笔记<四> default、rest、Multi-line Strings
		default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ... 
- ES6学习笔记<三> 生成器函数与yield
		为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ... 
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
		接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ... 
- ES6学习笔记<一>  let const class extends super
		学习参考地址1 学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ... 
- es6从零学习(五):Module的语法
		es6从零学习(五):Module的语法 ES6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量 一:es6模块化和 CommonJS 和 AMD 模块 (运行 ... 
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
		好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ... 
- (转)Qt Model/View 学习笔记 (五)——View 类
		Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ... 
随机推荐
- JS五星级评分效果(类似与淘宝打分效果)
			今天晚上研究下 五星级评分效果,类似于淘宝后台评分效果,如下图所示: 思路: 当鼠标移到一颗星的时候 判断当前的索引 当前及当前的索引前面的星星亮起来 每当移到任何一颗星星时候 下面跟随提示 mous ... 
- Android Fragment(二)
			废话:在上一篇的博客中我们给出了Fragment的简单介绍,这一片博客给大家介绍一下Fragment到底该怎样用.主要都用在哪方面等等. 需求:现有一个界面,要求,竖屏时界面的背景颜色为红色,横屏时界 ... 
- kubernetes 的wen pod 无法连接 mysql 的pod
			1.分析 查看源代码 既然无法建立连接,那先看下是如何建立连接的.登录到myweb的docker容器里面,查看index.jsp文件,主要内容如下: Class.forName("com.m ... 
- 基于Python自动发送QQ群消息
			1.准备工作 此次测试基于python3,需要安装qqbot.bs4.requests库. qqbot项目地址:https://github.com/pandolia/qqbot.git pip qq ... 
- ccf201703-1分蛋糕
			问题描述 小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an.小明想分给每个朋友至少重量为k的蛋糕.小明的朋友们已经排好队准备领蛋糕,对于每个朋 ... 
- 自定义View之实现流行的底部菜单栏中间突起:高仿“咸鱼APP”的底部菜单 - z
			http://blog.csdn.net/xh870189248/article/details/75808341 http://blog.csdn.net/yangg194/article/deta ... 
- 20155204《网络对抗》Exp8 Web基础
			20155204<网络对抗>Exp8 Web基础 一.基础问题回答 1.什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用C ... 
- 【转】从Shell脚本内部将所有标准输出及标准错误显示在屏幕并同时写入文件的方法
			如果全部都要重定向的话每一条命令后面>>并不方便,可以这么做.在开头就声明 exec 1>>$log_file表示将脚本中所有的正确输出全部追加到$log_file,错误信息会 ... 
- JAVA 静态方法和实例方法的区别 (图表)
			静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ... 
- CS190.1x-ML_lab5_pca_student
			这次lab也是最后一次lab了,前面两次lab介绍了回归和分类,特别详细地介绍了线性回归和逻辑回归,这次的作业主要是非监督学习--降维,主要是PCA.数据集是神经科学的数据,来自于Ahrens Lab ... 
