[[toc]]
ES6新特性
-
类
在ES6之前,如果要生成一个实例对象,传统的方法就是要写一个构造函数,例子如下:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.protorype.infomation = function(){
return 'My name is ' + this.name + ', I am ' + this.age
}
但是在ES6之后,我们只需要写成以下形式:
class Person {
constructor(name, age) {
this.name = name
this.age = age
}
information() {
return 'My name is ' + this.name + ', I am ' + this.age
}
}
函数参数默认值(Function parameter defaults)
在ES6之前,如果我们写函数需要定义初始值的时候,需要这么写:
function getData(data){
// 这样调用看起来是没有问题,但是如果参数的布尔值为falsy时就会出问题
// 比如这边的data如果是0 ,那么得到的值就会是data is empty
return data ? data : 'data is empty'
}
如果我们用函数参数默认值就没有这个问题,写法如下:
const getData= (data = 'data is empty') => {
return data
}
模板字符串(Template string)
在ES6之前,如果我们要拼接字符串,则需要像这样:
var name = 'kris'
var age = 24
var info = 'My name is ' + this.name + ', I am ' + this.age
但是在ES6之后,我们只需要写成以下形式:
const name = 'kris'
const age = 24
const info = `My name is ${name}, I am ${age}`
解构赋值(Destructuring assignment)
如果我们要交换两个值,在ES6之前我们可能需要:
var a = 10
var b = 20
var temp = a
a = b
b = temp
但是在ES6里,我们可以直接用解构的方式来实现:
var a = 10
var b = 20
[a, b] = [b, a]
模块化(Module)
在ES6之前,js没有模块化的概念,有的也只是社区定制的类似CommonJs 和 AMD之类的规则,用require来引入,代码如下:
// circle.js
// 输出
const { PI } = Math
exports.area = (r) => PI * r ** 2
exports.circumference = (r) => 2 * PI * r
// index.js
// 输入
const circle = require('./circle.js')
console.log(`半径为 4 的圆的面积是 ${circle.area(4)}`)
在ES6之后我们则可以写成以下形式:
// circle.js
// 输出
const { PI } = Math
export const area = (r) => PI * r ** 2
export const circumference = (r) => 2 * PI * r
// index.js
// 输入
import {
area
} = './circle.js'
console.log(`半径为 4 的圆的面积是: ${area(4)}`)
Promise
Promise是ES6提供的一个异步解决方案,比回调函数更加清晰,Promise 翻译过来就是承诺的意思,这个承诺会在未来有一个确切的答复,并且该承诺有三种状态,分别是:
- 等待中(pending)
- 完成了(resolved)
- 拒绝了(rejected)
这个承诺一旦从等待状态变成为其他状态就永远不能更改状态了,也就是说一旦状态变为 resolved 后,就不能再次改变
Symbol
Symbol是一种数据类型,数据类型有:String, Number, undefind, null, Boolean,object。
每个从Symbol()返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。
箭头函数(Arrow function)
扩展操作符(Spread operator)
对象属性简写(Object attribute shorthand)
转载至作者:陈大鱼头
链接:https://juejin.cn/post/6844904023787569159
来源:掘金
网友评论