美文网首页
ES6新特性

ES6新特性

作者: 夜冰云 | 来源:发表于2021-03-29 14:28 被阅读0次

[[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
来源:掘金

相关文章

网友评论

      本文标题:ES6新特性

      本文链接:https://www.haomeiwen.com/subject/nddbhltx.html