美文网首页
ECMAScript新特性

ECMAScript新特性

作者: lowpoint | 来源:发表于2021-04-07 23:35 被阅读0次

ECMAScript通常看作JavaScipt的标准化规范,实际上JavaScipt是ECMAScript的扩展语言,ECMAScript只提供了最基本的语法,JavaScipt实现了ECMAScript标准并在此基础上进行扩展。

ES2015

  • 解决原有语法上的一些问题或者不足
  • 对原有语法进行增强
  • 全新的对象、全新的方法、全新的功能
  • 全新的数据类型和数据结构

ES作用域

  • 全局作用域
  • 函数作用域
  • 块级作用域 (新增)块指的就是一对花括号包起来就是一个块

let
具有块级作用域
变量声明不会提升

const 恒量/常量 (let基础上多了只读,变量声明之后不允许再被修改)
只是不能修改它指向的内存地址,可以修改其中的属性

数组的解构

const arr = [1,2,3]
const [a,b,c] = arr //a:1,b:2,c:3
const [a,...bc] = arr //...只能在数组最后使用 bc=[2,3]

对象的解构

const obj = {name:'aa',age:18}
const { name } = obj //name = 'aa'
const {name:newName} = obj //重命名newName = 'aa'

模板字符串
传统字符串不支持换行 需要\n实现
模板字符串可以直接换行

const text = 'world'
const str = `hello ${text}`

//带标签的模板字符串
const name = 'jay'
const gender = true
const result = tagFn`hey,${name} is a ${gender}.`

function tagFn(strings,name,gender){
  console.log(strings) //['hey,','is a','.']
//name  'jay'
//gender true
return '123' //此时所对应的模板字符串的值为 '123'
}

字符串的扩展方法

  • includes() //是否包含某个字符
  • startsWith() //以某个字符开头
  • endsWith()//以某个字符结尾

Proxy 代理对象
监视某个对象属性的读写,可以使用Object.defineProperty
Proxy 专门为对象设置访问代理器的

const person = {
  name:'jay',
  age:20
}

const personProxy = new Proxy(person,{
  get(target,property){
    return property in target ? target[property] : undefined
  },
  set(target,property,value){
  },
  deleteProperty(target,property){
  }
})

defineProperty只能监视属性的读写
proxy 能够监视到更多的对象操作 如:delete操作 对象中方法调用等
proxy 更好的支持数组对象的监视
之前操作都是重写数组的操作方法

一个简写Promise

// (1)Promise就是一个类 在执行这个类的时候 需要传递一个执行器进去 执行器会立即执行
// (2)Promise中有三种状态 等待pending 成功fulfiled 失败rejected 状态不可逆
// (3)Resolve与rejected函数用来更改状态的
// (4)Then方法内部做的事情就是判断状态  成功:调用成功回调 失败:调用失败回调
// (5)Then成功回调有一个参数 表示成功之后的值 失败有一个参数表示失败后的原因

const PENDING = 'pending' //等待
const FULFILED = 'fulfiled' //成功
const REJECTED = 'rejected' //失败

class MyPromise {
  constructor(excutor) {
    excutor(this.resolve, this.resolve)
  }
  status = PENDING
  value = undefined
  reason = undefined
  resolve = (value) => {
    //将状态更改为成功
    if (this.status !== PENDING) return
    this.status = FULFILED
    //保存成功的值
    this.value = value
  }
  reject = (reason) => {
    //将状态更改为失败
    if (this.status !== PENDING) return
    this.status = REJECTED
    //保存失败原因
    this.reason = reason
  }
  //调用then方法 要判断状态如果是成功调用第一个回调,如果失败调用第二个
  then(successCb, failCb) {
    //判断状态
    if (this.status === FULFILED) {
      successCb(this.value)
    } else if (this.status === REJECTED) {
      failCb(this.reason)
    }
  }
}

相关文章

  • ECMAScript 新特性

    ECMAScript 与 JavaScript ECMAScript 的发展过程 ECMAScript 2015 ...

  • ECMAScript新特性

    ECMAScript通常看作JavaScipt的标准化规范,实际上JavaScipt是ECMAScript的扩展语...

  • ECMAScript的新特性

    ECMAScript 5相对于ECMAScript 3的新特性: Getter/setters Trailing ...

  • ES7及ES8新特性

    ES7新特性 (ECMAScript2016 新特性) 一、Array 1、Array.prototype.inc...

  • ECMAScript Decorator

    ECMAScript 7 网上查到的资料都说 Decorator 是 ECMAScript 7 的新特性。然而查找...

  • ECMAScript 2016 新特性

    ECMAScript 2016 仅仅只有两个新特性: Array.prototype.includesExpone...

  • ECMAScript新特性(二)

    Set数据结构 Set与Array是十分相似的,不过Set不允许值重复 Map数据结构 Map与对象是十分相似的,...

  • ECMAScript新特性(一)

    ECMAScript是什么 ECMAScript(ES),也是一门脚本语言,通常把它看作为JavaScript(J...

  • 浅谈ECMAScript新特性

    1.新的标准规范 ECMAScript2015 是 js 的一种的新的标准规范,就是对 js 的写法上提出了新的语...

  • ECMAScript 新特性 - 笔记

    文章内容输出来源:拉勾教育Java高薪训练营 概述 ECMAScript 定义了语言层面的规范,包括变量定义、函数...

网友评论

      本文标题:ECMAScript新特性

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