ES6模块中export、import命令和generator的使用


export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。

一、export命令

一个模块就是一个独立的文件。该文件内部的所有变量,
外部无法获取。如果你希望外部能够读取模块内部的某个变量,
就必须使用export关键字输出该变量。
输出变量
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;
export { firstName, lastName, year };
优先考虑使用这种写法
输出函数或者类
export 输出的变量就是本来的名字,但是可以使用as关键字重命名。
function v1() { ... }
function v2() { ... }

export {
 v1 as streamV1,
 v2 as streamV2,
 v2 as streamLatestVersion
};

二、 export default 命令

为模块指定默认输出。

exrot default Dog  (默认导出)
import  Dog,{ name,fn} from  './be.js'

三、import 命令

import 命令
import { firstName, lastName, year } from './profile.js';
可以通过import命令加载这个模块。
import { firstName, lastName, year } from './profile.js';
import命令接受一对大括号,里面指定要从其他模块导入的变量名。
大括号里面的变量名,必须与被导入模块(profile.js)对外接口的名称相同。
import命令输入的变量都是只读的,因为它的本质是输入接口。
也就是说,不允许在加载模块的脚本里面,改写接口。
模块的整体加载 
除了指定加载某个输出值,还可以使用整体加载,即用星号(*)指定一个对象,
所有输出值都加载在这个对象上面。
import * as circle from './circle';
对象里的内容,不允许运行时改变

四、generator

generator
	function* helloWorldGenerator() {
  yield 'hello';
  yield 'world';
  return 'ending';
}
var hw = helloWorldGenerator();
	执行 hw.next( )方法,,会得到
hw.next()
// { value: 'hello', done: false }

hw.next()
// { value: 'world', done: false }

hw.next()
// { value: 'ending', done: true }

hw.next()
// { value: undefined, done: true }
	done变为true是结束
	可使用 for of 循环直接去遍历hw
	常见面试题::利用迭代对对象进行遍历

五.遍历对象

<body>
    <p>点击</p>
    <script>
        var oP = document.querySelector('p');
        var obj = {
            name: '小明',
            age: 15,
            wight: 120
        };
        // 创建一个生成器
        function* fn(obj) {
            var key = Object.keys(obj);
            for (var i = 0; i < key.length; i++) {
                yield [key[i], obj[key[i]]]
            }
        }
        var it = fn(obj);
        // 遍历可迭代对象
        // for (var [k, v] of it) {
        //     console.log(k, v);
        // }
        oP.onclick = function() {
            var h = it.next();
            if (!h.done) {
                oP.innerText = h.value;
            } else {
                oP.innerText = '已结束'
            }
        }
    </script>
</body>

猜你喜欢

转载自blog.csdn.net/qq_47008195/article/details/107980874