1.let 与 const
同其他语言一样,JS中的变量作用域是函数域而不是块级分割的,但涉及到变量提升和闭包等问题时, var 并不能很方便地满足我们的需求,于是出现了 let 与 const 这两个定义变量的关键词;
我们来看一个例子:
1 | var a = 5; |
当 let 作用域块级作用域中,只要是 let 定义的变量,他就只能在所定义的那个花括号内起作用 。此外 ECMAScript 还添加了另外一个关键词 const ,这个关键词一旦定义了一个变量,这个变量就不能再被修改了。
例如:
1 | const aa = 11; |
2.类
原来的版本里说过,ECMAscript 是没有类的概念的,但在 ECMAScript 6 里面增添了一个 class 的关键词,我们可以把属性和方法定义在一个类里面,而且有类之后,继承那些问题就不用那么麻烦了
例如:
1 | var Animal = (function () { |
在这段代码我们可以看到,lion 这个对象继承了 Animal 原型对象的 doSomething 方法,最后输出了 I’m a Lion
3.解构赋值
通常来说,我们访问数组里面的元素形式可能是这样的:
1 | var first = someArray[0]; |
但使用了解构赋值的话就可以简便地写成:
1 | var [first, second, third] = someArray; |
还有另外一些解构赋值的:
1 | //数组 |
4.对象方法
在 ECMAScript 中还新增了几个 object 对象方法,分别是:
- Object.is()//比较严格相等,与 === 相似
Object.is() 与 === 非常相似,不同点在于:
1 | +0 === -0 //true |
- Object.assign(target,source1,source2)//复制对象可枚举属性
1 | Object.assign(target,source1,source2); |
Object.defineProperty
Object.setPrototypeof(a,null)//(裸对象)设置一个对象的prototype对象
1
2
3
4
5
6
7
8
9var Person = {
name: '张三',
birth, //birth: birth
hello(){console.log('hello');}
// hello: function(){console.log('hello');}
};
function(){
return {a,b}
}
5.属性名表达式
在 ECMAScript 6 之前是要用字符串来表示节点,现在可以用本来的属性名去调用它。例如:
1 | var lastWord = 'last word'; |
6. Set
想要得到没有重复成员的数组,可以用Set去去除重复的数组成员。
例如:
var a = new Set[1,2,3,5,3,4,3];
在这一数组中重复的3会被去掉。
7.Map
var a = {name:2,age:3};
var b = {a:4};
用对象或函数当做属性名
8.for-of 循环
在 ECMAScript 还没出来之前,我们要拿到数组里面的数值时,有人会用 for-each 的方法:
得到的结果:
虽然这一种方法能帮助我们得到数组里面的内容,但它有两个小缺点:
- 不能用return语句返回到外层函数
- 不能使用break语句中断循环
或许有人会用另外一种 for-in 的方法:
但这样写返回的结果是它的索引值:
要写成这样才能得到数组里面的值:
但 for-in 是为普通对象设计的,你可以遍历得到字符串类型的键,因此不适用于数组遍历。
用 for-of 时:
会直接得到结果为:
而 for-of 出现之后不但解决了 for-each 的两个缺陷还解决了 for-in 的所有的缺点。
9.Generator
ES6生成器(可以做游戏对话框)
10.Promise
主要是异步请求
1 | ajax |
参考资料:
let 与 const 关键字:
http://www.geekcome.com/content-10-2520-1.html
Class 类:
http://www.sitepoint.com/understanding-ecmascript-6-class-inheritance/
ES 资料:
http://www.infoq.com/cn/ecmascript/