ES6进阶——学完直接起飞

2024-01-16 22:08

本文主要是介绍ES6进阶——学完直接起飞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ES6进阶版

文章目录

  • 前言
  • 一、类
    • 1.创建类
  • 二、模块化
    • 1.export 导出和import导入
  • 三、可迭代对象
    • 1.set 数组去重
    • 2.WeakSet
    • 3.Map
    • 4.for of
    • 4.Promise
      • 异步处理
      • Promise解决回调地狱
      • Promise实现网络请求
  • 总结


前言

ES6 的出现主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念

目前存在少数低版本浏览器的 JavaScript 是 ES5 版本,大多数的浏览器已经支持 ES6

ES6基础链接: http://t.csdn.cn/xUElx.

一、类

ES6 中有 class 语法。值得注意是,这里的 class 不是新的对象继承模型,它只是原型链的语法糖表现形式。

1.创建类

代码如下:

//创建一个类
class Animal {constructor(color,age){this.color = color;this.age = age;}yeil(){alert("我大声咆哮");}}class Cat extends Animal{constructor(color,age,name){//父类构成函数//调用Animal构造函数constructorsuper(color,age); this.name = name;}skill(){alert("我超级会卖萌");}}// 实例化猫类var c1 = new Cat("黄色",2,"kitty");var c2 = new Cat("黑色",1,"可乐");c1.skill();c1.yeil();

二、模块化

1.export 导出和import导入

在html中模块化引入js 
1. 有http服务器
2. <script type="module">

HTML代码如下:

//导入
import{name,fun} from"./js/utils.js"
console.log(name);
//导入函数
import{fun} from'./js/utils.js'
fun()
//导入默认  名称可以随便起
import Cat from'./js/utils.js'
var c1=new Cat("小不点")
console.log(c1);

导入所有内容

//导入所有内容 起一个别名叫utils 从url里面找到import * as utils from './js/utils.js';console.log(utils.name);utils.fun()var c=new utils.default("小白")console.log(c); 

JS代码如下:

var name="索隆";
export{name}
//导入name
function fun(){console.log('我叫'+name+"我要成为世界第一大剑豪");
}
//导出函数
export{fun}//导出默认
class Cat{constructor(name) {this.name=name}
}
//一个文件里面只能导出一个默认
export default Cat

三、可迭代对象

1.set 数组去重

代码如下(示例):

var s2 = new Set([1, 2, 3,2]); 
console.log(s2);
//  {1, 2, 3}
var arr=[1,2,3,4,5,1,1,2]
var s2=new Set(arr)
//把数组展开放入新数组内
arr=[...new Set(arr)]		
console.log(arr);
//{1,2,3,4,5}

2.WeakSet

WeakSet结构与Set类似,也是不重复的值的集合。
WeakSet的成员只能是对象,而不能是其他类型的值

3.Map

ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键

var m = new Map([[‘Michael’, 95], [‘Bob’, 75], [‘Tracy’, 85]]);

方法

set get delete clear has size

WeakMap 就是一个 Map,只不过它的所有 key 都是弱引用,意思就是 WeakMap 中的东西垃圾回收时不考虑,使用它不用担心内存泄漏问题。
另一个需要注意的点是,WeakMap 的所有 key 必须是对象。没有size

4.for of

for in 循环用于遍历数组,类数组或对象,ES6中新引入的for of循环功能相似,不同的是每次循环它提供的不是序号而是值


    var arr = ["路飞", "索隆", "山治", "乌索普"]for (let a of arr) {console.log(a);}var str = "富士山什么时间爆发啊:)"//一些生僻字一个字占两个字符长度; 避免出错可以用for offor (let s of str) {console.log(s);}//keys()键的集合for (let k of arr.keys()) {console.log(k);}//values 值的集合for (let v of arr.values()) {console.log(v);}//entries 键与值的集合for (let [k, v] of arr.entries()) {console.log(k, v);}

可以被 for of 遍历的元素

字符串,数组,set,map

4.Promise

ES6 对 Promise 有了原生的支持,一个 Promise 是一个等待被异步执行的对象,当它执行完成后,其状态会变成 resolved 或者rejected。

promise 承诺 resolve完成解决 reject 拒绝兑现

异步处理

 //Promise 主要做异步处理//索隆对路飞说要成为世界第一大剑豪(现在还未完成)//索隆不能立即执行成为世界第一大剑豪 需要3000毫秒后完成var p = new Promise((resolve, reject) => {setTimeout(() => {var num = Math.random();//随机数if (num > 0.5) {//大于0.5时完成承诺resolve("成为世界第一大剑豪")} else {//未完成承诺reject("鹰眼手下打猩猩")}}, 3000);})//一段时间后(3000毫秒)路飞问索隆然后呢p.then(res => {//箭头函数简写 完成承诺console.log(res);}).catch(function (err) {//回调函数  未完成承诺console.log(err);})

Promise解决回调地狱

 //2秒后对女生说“你好,很高兴认识你”//3秒后 说“能加个微信吗”//5秒后被警察抓走 和凣凣做室友function say(msg, time) {return new Promise((resolve, reject) => {setTimeout(() => resolve(msg), time)})}//调用函数 2秒后执行say("你好,很高兴认识你", 2000).then(res => {console.log(res);return say("咱俩能加个微信吗", 3000)}).then(res => {console.log(res);return say("被警察抓走,和凣凣做室友", 5000);}).then(res => {console.log(res);})

Promise实现网络请求

找到当前城市地址

 function getApi(url){return new Promise((resolve,reject)=>{$.ajax({url,dataType:"jsonp",success(res){resolve(res)  },error(err){reject(err)}})})}var url = " https://apis.map.qq.com/ws/location/v1/ip?key=3BFBZ-ZKD3X-LW54A-ZT76D-E7AHO-4RBD5&output=jsonp"getApi(url);

获取当前城市的天气

 <span class="city"></span><span class="weather"></span><script>function getApi(url) {return new Promise((resolve, reject) => {//发送ajax请求 url请求的地址 datatype请求数据类型 success成功后回调 error失败后回调$.ajax({url,dataType: "jsonp",success(res) {//兑现成功 对应。thenresolve(res);},error(err) {//拒绝兑现 对应。catchreject(err)}})})}var url = " https://apis.map.qq.com/ws/location/v1/ip?key=3BFBZ-ZKD3X-LW54A-ZT76D-E7AHO-4RBD5&output=jsonp"//执行函数 传入 urlgetApi(url)// resolve被执行通过。then获取resolve的结果.then(res => {console.log(res);//设置.city的文本为获取的城市$(".city").text(res.result.ad_info.city)//获取该城市的天气var url2 = `http://wis.qq.com/weather/common?weather_type=observe|forecast_24h|air&source=pc&province=${res.result.ad_info.province}&city=${res.result.ad_info.city}`return getApi(url2)}).then(res => {console.log("天气", res);var str = `${res.data.observe.degree}度,${res.data.observe.weather}`$(".weather").text(str)})//失败后控制台输出失败的结果.catch(err => console.log(err))</script>

总结

在这里插入图片描述

以上就是 ES6 最常用的一些语法,可以说这20%的语法,在ES6的日常使用中占了80%
  • 创作不易,深夜肝文,如果对大家有帮助,还请大家支持一波~
  • 点赞,关注,收藏走一波,感激不尽!
  • 好人一生平安,一胎生八个!

这篇关于ES6进阶——学完直接起飞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/614045

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧