ES6
// 报错 export 1; // 报错 var m = 1; export m;上面两种写法都会报错,因为没有提供对外的接口。第一种写法直接输出 1,第二种写法通过变量m,还是直接输出 1。1只是一个值,不是接口。正确的写法是下面这样。
// 写法一
export var m = 1;
// 写法二
var m = 1;
export {m};
// 写法三
var n = 1;
export {n as m}; import {readFile} from ‘A' constructor() {}
constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。
class Foo { constructor() { return Object.create(null); } } new Foo() instanceof Foo // false
上面代码中,constructor函数返回一个全新的对象,结果导致实例对象不是Foo类的实例。
类的构造函数,不使用new是没法调用的,会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。
class Foo { constructor() { return Object.create(null); } } Foo()// TypeError: Class constructor Foo cannot be invoked without 'new'
//错误写法一:
export 1; //没有提供对外的接口,直接输出1
//错误写法二:
var m = 1;
export m; //虽然有变量m,但其实还是直接输出1,导致无法解构。
//正确写法一:
export var m = 1;//导出一个啥
//正确写法二:
var m = 1;
export { m }; //导出一个对象
//正确写法三:
var n = 1;
export { n as m }; //导出一个对象 在A模块中export default{readFile}后,在B模块中import readFile from ‘A’
另一种是 在A模块中export{readFile}后,在B模块中import readFile from ‘A’
export {name1,name2, …,nameN}; export {variable1asname1,variable2asname2, …,nameN}; export letname1,name2, …,nameN; // also var export letname1= …,name2= …, …,nameN; // also var, const export expression; export default expression; export default function (…) { … } // also class, function* export default function name1(…) { … } // also class, function* export {name1as default, … }; export * from …; export {name1,name2, …,nameN} from …; export {import1asname1,import2asname2, …,nameN} from …;import defaultMember from "module-name"; import * as name from "module-name"; import { member } from "module-name"; import { member as alias } from "module-name"; import { member1 , member2 } from "module-name"; import { member1 , member2 as alias2 , [...] } from "module-name"; import defaultMember, { member [ , [...] ] } from "module-name"; import defaultMember, * as name from "module-name"; import "module-name";