ES6总结之类和模块
Contents
ES6 类
简介
和Java定义类相类似
class Point {
// 构造函数
constructor (x,y) {
this.x = x
this.y = y
}
// 类方法
toString () {
return '(' + this.x + ', ' + this.y + ')'
}
}
注意事项:
- ES6 的类,完全可以看作构造函数的另一种写法
typeof Point // "function"
- 类的内部所有定义的方法,都是不可枚举的
Object.keys(Point.prototype)
// []
Object.getOwnPropertyNames(Point.prototype)
// ["constructor","toString"]
一个类必须有constructor方法
类方法调用必须要使用new
不存在变量提升
类的方法内部如果含有this,它默认指向类的实例
方法提取出来单独使用,this
会指向该方法运行时所在的环境
constructor() {
this.printName = this.printName.bind(this);
}
静态属性/方法和实例属性/方法 (父类的静态方法,可以被子类继承)
父类只能继承,不能被实例化
class Parent {
constructor () {
if (new.target === Parent) {
throw new Error('aa)
}
}
}
ES Module
ES6模块和CommonJS、AMD等模块
都是运行时确定
整体加载,然后再读取方法。运行时加载
ES6模块编译时加载
严格模式
ES6模块默认采用严格模式,模块内顶层this
指向undefined