ES6类和模块

一、类的概述

class是ES6中的语法糖,本质上还是function。

优点:语法简便、可读性高、可维护性高

java中的语法糖:

Java语言不管怎么变,本质上还是类、强类型

List list =new ArrayList();
list.add(new object());
...
for(Object obj : list){
	System.out.println(obj);
}
list.forEach(obj -> System.out.println(obj) );

//Java语言不管怎么变,本质上还是类、强类型

二、类的基本用

1.类的定义:

类表达式可以为匿名或命名。

// 匿名类
let Example = class {
    constructor(a) {
        this.a = a;
    }
}
// 命名类
let Example = class Example {
    constructor(a) {
        this.a = a;
    }
}

 

2.类的声明

class Example {
    constructor(a) {
        this.a = a;
    }
}

注意:不能重复声明,重复声明会报错

ES6类和模块_第1张图片
必须在访问前对类进行定义,否则就会报错。

类中方法不需要 function 关键字。

方法间不能加分号。

ES6类和模块_第2张图片

三、类的主体

prototype

ES6 中,prototype 仍旧存在,虽然可以直接自类中定义方法,但是其实方法还是定义在 prototype 上的。 覆盖方法 / 初始化时添加方法

Example.prototype={
    //methods
}

添加方法

Object.assign(Example.prototype,{ //methods })

静态属性:class 本身的属性,即直接定义在类内部的属性( Class.propname ),不需要实例化。 ES6 中规定,Class 内部只有静态方法,没有静态属性。

ES6类和模块_第3张图片

公共属性

ES6类和模块_第4张图片

实例属性

实例属性:定义在实例对象( this )上的属性。

name 属性

返回跟在 class 后的类名(存在时)。

方法

constructor 方法

constructor 方法是类的默认方法,创建类的实例化对象时被调用。

模块

一、概述

ES6的重大的语法升级。一个 js文件就是一个模块,编译的时候就可以确定依赖关系,控制暴露的方法、变量等。

ES6严格模式

1.对变量的影响:

变量必须先声明后使用。提高代码的可读性,可维护性。

2.对类的影响:

向只读的属性赋值会报错,对于不可扩展的对象添加属性会报错

3.对函数的影响:

普通函数中,不允许使用this引用window对象

函数的参数必须唯一

eval()函数不会创建变量或函数

二、export 与 import
基本用法

  • 导出的函数声明与类声明必须要有名称(export default 命令另外考虑)。 
  • 不仅能导出声明还能导出引用(例如函数)。
  • export 命令可以出现在模块的任何位置,但必需处于模块顶层。
  • import 命令会提升到整个模块的头部,首先执行。
  • ES6类和模块_第5张图片

你可能感兴趣的:(ES6系列)