es6常用特性(三)
一、Iterator
- for…of与for…in的区别
for…in只能获取对象的键名,不能直接获取键值;for…of允许遍历获取键值var arr = ['a','b','c'];
for(let a in arr){
console.info(a); //0,1,2
}
for(let a of arr){
console.info(a); //a b c
}
for…in 可以遍历没有实现Iterator的对象,并输出键名;for…of不能够遍历未实现Iterator的对象,可以使用Object.keys()获取对象的键名数组然后进行遍历。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24var es6 = {
edition: 6,
committee: "TC39",
standard: "ECMA-262"
};
<pre><code>for (let e in es6) {
console.log(e);
}
// edition
// committee
// standard
for (let e of es6) {
console.log(e);
}
// TypeError: es6 is not iterable
</code></pre>
<code>2. javascript中4种遍历方法
1. for循环</code>
for(let i=0;i<10;i++){
<pre><code>} - forEach() 特别注意:在forEach中无法使用break,continue,break命令
1 | arry.forEach(function(value,index){ |
- for…in
- for…of
</code></pre>
二、 class
- 可以结合java中类的概念来理解。
- 特别注意,this关键字指向问题
1 | class Logger { |
printName方法中的this,默认指向Logger类的实例。但是,如果将这个方法提取出来单独使用,this会指向该方法运行时所在的环境,因为找不到print方法而导致报错。
三、Module
- export default命令
export default 指定模块的默认输出,本质上,export default就是输出一个叫做default的变量或方法,然后系统允许你为它取任意名字。所以,下面的写法是有效的。
// modules.js function add(x, y) { return x * y; } export {add as default}; // 等同于 // export default add; // app.js import { default as xxx } from 'modules'; // 等同于 // import xxx from 'modules';