Javascript/ES6的类和模块
类语法是Javascript面向对象的语法糖,并不对原来有影响,还是能使用构造器和原型方式。
构造器方法是用来创建和初始化对象的特殊方法,它是每次运行都创建一个新的实例。
class nameOfClass {
constructor(name, description url) {
this.name = name;
this.description = description;
this.url = url;
}
render() {
// instance methods
}
_privateMethod() {
// private methods
}
}
带有下划线的方法表明这个方法不应该从公共API调用。
类的调用:
let instance = new nameOfClass(name, description, url);
instance.render();
为了重用代码,类可以使用继承,子类就能使用父类中的方法行为:
class Child extends Parent {
constructor() { super();
}
parse() {
let parentParse = super.parse();
// vary the parse method in the child
}
render() { // 能够访问从父类继承的方法和属性
}
}
super()是用来运行父类的构造器函数。
模块
模块不能加入到全局namespace名称空间,比如,fash-message.js:
export default function(message) {
alert(message);
}
app.js:
import module from './flash-message';
module('Hello');
默认的类型export会限制我们从一个模块export的函数数量,为了从一个模块export多个函数,我们使用命名的 export(移除default和函数名字)
或者我们可导入整个模块作为对象,然后如同调用对象的属性一样调用其函数。
import * as flash from './myModule';
flash.myMethod();
类也能使用同样语法从模块中导出或导入,不同的是,必须用新的关键词创建类的实例。