当前位置: 首页 > news >正文

js的es6

ES6

ECMAScript 第六个版本, 发布于2015年. 是JS提供特性最多的版本, 升级最大的版本

  • 非常好的参考文档
    https://es6.ruanyifeng.com/#docs

let

  • 块级作用域
  • 同一作用域中, 不允许重复声明
  • 在全局作用域中声明, 变量会存储在脚本区, 而非全局window中, 所以不会造成全局变量污染
  • 推荐用let 代替 var

const

  • 块级作用域
  • 在全局作用域中声明, 变量会存储在脚本区, 而非全局window中, 所以不会造成全局变量污染
  • 同一作用域中, 不允许重复声明
  • 声明时必须赋值, 后续不允许重新赋值
  • 在没有重新赋值的场景中, 推荐用const 代替 let

数组的展开

  • … 运算符, 可以把数组展开

  • 常用于把数组展开成函数参数, 代替 函数的apply 方法的场景

    • Math.max(…[11,22,33])
  • 合并数组

    • […数组1, …数组2]

对象的展开

  • … 运算符, 可以把对象类型展开

  • 合并对象

    • {…对象1, …对象2}

剩余参数

  • function 函数(a, …args)

    • args 非固定名称, 可以随意书写
    • 示例函数, 剩余的参数都会存储在 args 这个数组类型的变量里

参数默认值

  • function 函数(参数=值)

数组解构

  • let [a,c] = [11, 22, 33]

    • a = 11
      c = 33

对象解构

  • let {name, age} = {name: 11, age:22}

    • name = 11
      age = 22
  • 别名写法

    • let {name: gname, age} = {name: 11, age: 22}

      • gname = 11
        age = 22

模板字符串

  • ``

  • 配合 ${} 关键词, 可以在 模板字符串中书写JS代码

  • 场景

    • 在DOM操作中, 常用于拼接 HTML 模板代码

箭头函数

  • 匿名函数的简化写法

  • ()=>{}

  • 语法糖1

    • 当参数仅有一个时, 简化()
    • name => {}
  • 语法糖2

    • 方法体只有一行代码时, 简化 {return }

    • ()=> {return xxx}

      • ()=>xxx
    • 注意

      • 如果 返回值是对象类型, 则必须用()包裹, 来防止{}的歧义
      • ()=> ({xx: xxx})
  • this

    • 本身没有this, 使用声明时所在作用域中的this
  • 不能做构造函数使用

    • 搭配new使用会报错
  • 没有 bind, call, apply 这些方法

对象方法

  • Object.keys

    • 获取对象所有可遍历的直属属性
  • Object.setPrototypeOf

    • 替换对象类型的原型
  • Object.create

    • 创建对象类型时, 指定其原型和属性

for of

  • 快速遍历数组类型, 得到其中的值
  • for (let value of arr){}

Promise

  • 一种实现异步操作的方式

  • 旧方式: 回调函数

    • 有造成回调地狱的风险
  • Promise利用链式语法来防止回调地狱的发生

  • 基础语法

    • new Promise((resolve, rejected)=>{
      resolve({})

    reject({})
    }).then(res=>{}).catch(err=>{})

      - resolve会触发 then函数,  其参数会传递给 res
      - reject 会触发 catch 函数, 其参数会传递给 err
      - resolve 和 reject 二选一,  只能触发其中一个,  触发之后另一个无法触发
    
  • 三种状态

    • pending

      • 准备就绪, 初始
    • fulfilled

      • resolve 已解决
    • rejected

      • reject 被拒绝, 失败

class

  • 面向对象三大特征

    • 封装

      • 用{} 把代码括起来, 后续通过名字进行调用
    • 继承

      • 原型链效果: 自己没有的属性, 去__proto__中查找
    • 多态

      • 继承同一个构造函数后, 可以得到更多具有个人特色的构造函数, 这些构造函数重写父的属性, 可以具有多种状态效果
  • JS提供了独特的 构造函数方式语法

    • function Point(x, y) {
      this.x = x;
      this.y = y;
      }

Point.prototype.toString = function () {
return ‘(’ + this.x + ', ’ + this.y + ‘)’;
};

var p = new Point(1, 2);

  • 这种语法与传统的面向对象语言, 例如 C++ JAVA PHP Python 等等… 差异非常大, 很容易让这些程序员感觉困惑

  • ES6提供了更接近传统语言的写法, 本质上是一个语法糖, 让传统程序员更容易学习和接受

  • class 类名 extends 父类 {
    static 静态属性

    static 静态方法(){}

    constructor(a, b){
    this.a = a
    this.b = b
    }

    对象方法(){
    super.对象方法()
    }

}

- extends是继承的关键词

	- 相当于 类.prototype.__proto__ = 父类.prototype

- static

	- 静态关键词, 相当于   类.属性名 = 值

- constructor

	- 构造方法

- super

	- 代表父类的关键词

- this

	- 代表当前对象的关键词

相关文章:

  • 开源交流丨任务or实例 详解大数据DAG调度系统Taier任务调度
  • 配置Tomcat时系统环境变量已经配置好,但是启动Tomcat时还是闪退的解决办法
  • app,小程序打包
  • CVPR2022|比VinVL快一万倍!人大提出交互协同的双流视觉语言预训练模型COTS,又快又好!
  • 2023年考武汉安全员证有什么作用?安全员岗位职责是什么?甘建二
  • 开户许可证识别 易语言代码
  • ESP8266-Arduino编程实例-MLX90615红外测温仪驱动
  • 【算法leetcode】1837. K 进制表示下的各位数字总和(rust和go是真的好用)
  • Java中的实体类为什么要 implements Serializable?
  • 第十七天计算机视觉之光学字符识别OCR
  • Transformer架构
  • 基于SSM框架的人力资源管理系统毕业设计源码060936
  • js的基础
  • 分布式协同AI基准测试项目Ianvs:工业场景提升5倍研发效率
  • 通过Amazon EventBridge监控AWS资源发送告警至钉钉
  • 【RocksDB】TransactionDB源码分析
  • C++类中的特殊成员函数
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Flex布局到底解决了什么问题
  • github从入门到放弃(1)
  • Js基础知识(一) - 变量
  • Mybatis初体验
  • Netty 4.1 源代码学习:线程模型
  • Netty源码解析1-Buffer
  • ng6--错误信息小结(持续更新)
  • Sublime text 3 3103 注册码
  • 爱情 北京女病人
  • 从0实现一个tiny react(三)生命周期
  • 免费小说阅读小程序
  • 入门级的git使用指北
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 自定义函数
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • !!java web学习笔记(一到五)
  • #162 (Div. 2)
  • (4)STL算法之比较
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)斐波那契Fabonacci函数
  • (分类)KNN算法- 参数调优
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (转)setTimeout 和 setInterval 的区别
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • ?.的用法
  • @property括号内属性讲解
  • [AIGC] MySQL存储引擎详解
  • [C#基础]说说lock到底锁谁?
  • [c]扫雷
  • [C++]C++基础知识概述
  • [FFmpeg学习]从视频中获取图片