ES6|青训营

77 阅读4分钟

ES6

ECMAScipt是ECMA International定义的商标脚本语言规范。创建它是为了标准化JavaScipt。ES脚本语言具有许多实现,流行的实现是JavaScipt。通常,ECM用于万维网的客户端脚本。

ES6是JavaScipt语言的主要增强,允许我们编写程序,ES6适用于复杂的应用程序,在目前的互联网ES6的使用率远远比ES5高所以我们要进行ES6的学习接下来就让我们看看都有那些改动把。

1.const和let

ES6推荐使用let声明局部变量,相比之前的var,无论是在何处进行生声明,都会被视为声明在函数的最顶部。

let表示声明变量,而const表示声明常量,两者都为块级作用域;当const声明的是一个对象时,这个对象包含的值是可以被修改的,但对象所指向的地址值不能被改变。

2.模板字符出

在ES6之前我们往往通过“ \ ”和“ + ”来构建模板,但在ES6诞生之后我们还是用${}来界定只是用反引号(``)来包住内容即可。

3.箭头函数(Arrow Functions)

ES6中,箭头函数就是函数的一种简写方式,使用括号包裹参数,跟着一个 => ,紧接着是函数体;

有三个比较直观的特点:

1.省略return关键字

2.不需要用function关键字来创建函数

3.继承当前上下文的this关键字

// es5
var p = function (a,b) {
	return a+b;
}
// 箭头函数
 var p = (a,b) => a + b;

4.for...of 和 for...in

for...of用于遍历一个迭代器,如数组:

let zimus = ['a', 'b', 'c'];
zimus.size = 3;
for (let zimu of zimus) {
  console.log(zimu);
}
// 结果: a, b, c

for...in用于遍历对象中的属性:

 let stus = ["猫猫", "17", "女"];
 for (let stu in stus) {
   console.log(stus[stu]);
  }
// 结果: 猫猫, 17, 女

5.对象和数组结构

ES6 允许按照一定模式从数组和对象中提取值,对变量进行赋值

  • 解构赋值虽然很方便,但是解析起来并不容易。对于编译器来说,一个式子到底是模式,还是表达式,没有办法从一开始就知道,必须解析到(或解析不到)等号才能知道。

  • 由此带来的问题是,如果模式中出现圆括号怎么处理。ES6 的规则是,只要有可能导致解构的歧义,就不得使用圆括号。

  • 但是,这条规则实际上不那么容易辨别,处理起来相当麻烦。因此,建议只要有可能,就不要在模式中放置圆括号。

数组的解构:

        const TEAM=['日富美','小梓','小春','花子'];
        let[JK,dian,buse,sese]=TEAM;
        console.log(JK);//日富美
        console.log(dian);//小梓
        console.log(buse);//小春
        console.log(sese);//花子

对象的解构:

const heimao={
            name:'黑见芹香',
            age:16,
            aihao:function(){
                console.log('兼职')
            }
        };

        let{age,name,aihao}=heimao;
        console.log(name);//黑见芹香
        console.log(age);//16
        console.log(aihao);//f(){consle.log('兼职')}

6.Set

Set对象是值的集合,可以按照插入的顺序迭代它的元素。

//声明 set
    let s = new Set();
	let s2 = new Set(['黑猫','小狐狸','小火龙','砂狼','小狐狸']);

set可以进行添加、删除、检测、清空等操作;

//添加新的元素
        s2.add('坦克');
//删除元素
        //s2.delete('砂狼');
//检测
        console.log(s2.has('小火龙'));// true/false
        

//清空
        //s2.clear();
        //console.log(s2);

7.RegExp 构造函数

在 ES5 中,RegExp构造函数的参数有两种情况。

  • 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。
  • 第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。
  • 但是,ES5 不允许此时使用第二个参数添加修饰符,否则会报错。
  • ES6 改变了这种行为。如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。

8.Object.getPrototypeOf()

`Object.getPrototypeOf方法可以用来从子类上获取父类。

Object.getPrototypeOf(ColorPoint) === Point// true

因此,可以使用这个方法判断,一个类是否继承了另一个类。

还有许多在ES6当中的新东西,比如:rest参数、类继承、迭代器等等,需要大家自己的探索了。