我认识的ES6

ES6——ECMAScript6,由ECMA组织制定标准,是ECMAScript的最新版本。

最常用的ES6特性

let, const, class, extends, super, arrow functions, template string, destructuring, default, rest arguments

1.let,const

这两个的用途与var类似,都是用来声明变量的,但在实际运用中他俩都有各自的特殊用途。

首先看下面程序:

<script type="text/javascript">
			var a="abc";
		    while(1){
				var a="efg";
				break;
			}
			console.log(a);//输出efg
		</script>

为什么输出结果会是efg而不是abc呢?

因为JavaScript中只有全局作用域和函数作用域,并没有块级作用域,所以while中定义的变量也被绑定在外部全局作用域中,也就是产生了内层覆盖外层的结果。

而let恰恰解决了这个问题,let为js新增了块级作用域,用它所声明的变量,只在let命令所在的代码块内有效。

<script type="text/javascript">
            var a="abc";
            while(1){
                let a="efg";
                break;
            }
            console.log(a);//输出abc
        </script>

const用来声明常量,一旦声明,常量的值就不能改变

const有一个很好的应用场景,就是当我们引用第三方库的时声明的变量,用const来声明可以避免未来不小心重命名而导致出现bug

2.class,extends,super

这三个特性涉及了ES5中最让人头疼的几个部分:原型,构造方法,继承

ES6引入了更接近传统语言的特性,引入class(类)的概念,大大优化了ES5原型的繁琐。

class Animal {
    constructor(){
        this.type = 'animal'
    }
    says(say){
        console.log(this.type + ' says ' + say)
    }
}

let animal = new Animal()
animal.says('hello') //animal says hello

class Cat extends Animal {
    constructor(){
        super()
        this.type = 'cat'
    }
}

let cat = new Cat()
cat.says('hello') //cat says hello

上述代码中,class定义了一个Animal类,类中constructor代表构造方法,this代表实例对象。animal为Animal类的一个实例化对象。

接下来,class又定义了一个Cat类来继承Animal类,具体来说就是继承了Animal父类的所有属性和方法。

super函数指代父类实例(即父类的this对象),子类必须在constructor方法中调用super()方法,否则新建实例时会报错,这是因为子类没有自己的this对象,而是继承父类的this对象。

ES6的继承机制,实质是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。

3.default,rest

default很简单,意思就是默认值。大家可以看下面的例子,调用animal()方法时忘了传参数,传统的做法就是加上这一句type = type || 'cat'来指定默认值。

  function Animal(type){
            	type=type||'cat';
            	console.log(type);
            }
            Animal();//输出cat
如果用ES6我们可以直接这么写

function animal(type='cat'){
             console.log(type);
           }
           animal();//输出cat
rest实现一种不定参数的形式,参数的数量事先不确定,分情况不同而不同

 function animal(...types){
              console.log(types);
         }
         animal('cat','dog','shit');//Array [ "cat", "dog", "shit" ]










  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值