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();   

 

类也能使用同样语法从模块中导出或导入,不同的是,必须用新的关键词创建类的实例。

 

Javascript6简明手册