ECMAscript6学习

在这里插入图片描述

ECMAscript6介绍

ECMA是一个浏览器脚本标准制定的公司,Netscape 创造了 JavaScript 由于商标原因,
后面ECMA公司取名ECMAscript 1 发布,JavaScript 也就是 ECMAscript.到现在最新的版本是6,简称es6.

新增let 与const

let 与const 除了都是快作用域 { } const不同的是声明必须赋值且不能更改。

模版字符串``

       var a="AAAAAA";
	   var str=`<div>${a}${a}</div>`;
	   document.querySelector("#div_1").innerHTML=str;

扩展运算符 …keys,接收参数

function fun1(obj,...keys){
  alert(keys[0]);//a
}
fun1({"name":"php"},"a","b","c")

//数组扩展运算法
var arrs=[1,5,4,9,5,3];
//找出数组中最大值
alert(Math.max(...arrs));

箭头函数

var fun1=(a)=>a*10;
var fun2=(a,b)=>a*b;
var fun3=(a,b)=>{return a*b};
alert(fun3(10,30))
document.querySelector("#div_1").innerHTML=fun1(10);

数组的扩展

Array.from();
1.将方法的参数转为数组

function aa(...keys){   console.log(Array.from(keys))} aa(1,2,"qqq")  //[1,2,"qqq"]

2.对数组进行遍历处理

console.log(Array.from([1, 2, 3], (x) => x + x));
// Expected output: Array [2, 4, 6]

3.将字符串转为数组

console.log(Array.from('foo'));
// Expected output: Array ["f", "o", "o"]

4.操作DOM

let ps = document.querySelectorAll('p');//获取所有P元素
Array.from(ps).filter(p => {//转成数组后,查找>100的元素
  return p.textContent.length > 100;
});

Array.of() 生成一个新数组,不考虑里面的类型

let a=Array.of('丽丽','北京',123);
console.log(a);//["丽丽", "北京", 123]

object.assign() 将多个对象合并为一个对象

Object.assign({"name":"php"},{"age":20})//{name: 'php', age: 20}

object.is()严格比较 === 比较值还比较类型

Object.is(1,1)//true
Object.is(1,"1")//false
Object.is(NaN,NaN)//true, ===就为false

Set()与Map() 两种新的数据结构

Set() 不能有重复值

var set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]
// 去除数组的重复成员
[...new Set(array)]

Map()键值对的数组,key可以是任意类型

var m = new Map();
var o = {p: 'Hello World'};
m.set(o, 'content')
m.get(o) // "content"

symbol 新增的数据类型

 表示独一无二的值,内部的指针地址,不一样   object.is()都会为false
var s1 = Symbol('foo'); var s2 = Symbol('foo');    s1==s2 //false

Promise对象

ES6专门为异步请求封装的一个对象。他有三种状态,Pending(进行中)、Resolved(已完成),Rejected(已失败)
Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject,这个参数都是方法,成功时执行resolve(),失败执行reject()
function getJson(url){
	var promise = new Promise(function(resolve, reject) {
	  const xhr= new XMLHttpRequest();//使用原生异步请求,使用promise封装
	  xhr.open('GET',URL);
	  xhr.onreadystatechange=handler;
	  xhr.responseType='json';
	  xhr.setRequestHeader('Accept','application/json');
	  //发送请求
	  xhr.send();//
	  function handler(){ 
         if (this.readyState==4){
            if(this.status==200)
		        resolve(value);
		       else
		        reject(error);   
		  }
      }
	});
}
//调用
getJson("http://xxxx").then((v)=>{}).catch((v)=>{})

async 与 await ES7中的特性 主要用于异步等待

async 里面会自动转为Promise对象
await 必须在async中使用不能单独使用,可多个await.

async  function fun2(){ 
      await let a= axios.post();  
      a=""//会等待上面的执行完在执行这一行    
}
///
async function fun1(){ 
return await "abc"; 
}  
fun1().then((v)=>{
        return v+"d";
      }).then((v)=>console.log(v+"e")
       ).finally(()=>console.log("finally!"))
///  一般配合异步请求使用,.then((v)=>{})为成功回调,.catch((v)=>{})为失败回调
async function fun1(){ return await new Error("错误le"); }  
fun1().then((v)=>console.log(v)).catch((v)=>{console.log(v);})

Class

ES6引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。
es5定义类:看上去还是像一个方法

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);

es6定义类: 更像正真意义上的类

//定义类
class person{
  //constructor构造函数
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  //方法不用加逗号
  showname() {
    return this.name;
  }
}

类的继承

class php extends person {
  constructor(name, age,zhiye) {
    super(name,age)
    this.zhiye= zhiye;
  }
  //方法不用加逗号
  showzhiye() {
    return this.zhiye;
  }
  //可以重写父类的方法
  showname() {
    return this.name+this.age;
  }
}
const obj=new php('php',20,"工程师");
obj.showname2();
obj.showname()

module 模块化

es5中使用一个外部js 必须

export function a(){
  console.log('a');
}
export function b(){
  console.log('b');
}
//引入
import {a,b} from './text.js'
a() // 'a'
b() // 'b'

统一暴露

function a(){
  console.log('a');
}

function b(){
  console.log('b');
}
export {a,b}
//引入
import {a,b} from './text.js'
a() // 'a'
b() // 'b'

默认暴露

export default {
  a(){
    console.log('a');
  },
  b(){
    console.log('b');
  }
}
//引入
import qwe from './text.js'
qwe.a() // 'a'
qwe.b() // 'b'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/472210.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

精酿啤酒:啤酒花的添加时机与风味影响

啤酒花是啤酒酿造过程中不可或缺的成分&#xff0c;它为啤酒带来与众不同的苦味和香味&#xff0c;并增加了啤酒的层次感和复杂性。接下来将详细介绍Fendi Club啤酒在啤酒花的选择、添加时机和风味影响方面的实践和特点。 首先&#xff0c;Fendi Club啤酒选用上好啤酒花&#x…

Python爬虫获取接口数据

Python爬虫获取接口数据 正常人的操作​​​​​​​​​​爬虫的思路标题获取请求信息标题请求转换为代码完整代码请求返回信息执行程序获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获…

docker仓库登录及配置insecure-registries的方法

docker仓库登录及配置insecure-registries的方法 这篇文章主要介绍了docker仓库登录配置insecure-registries的方法,docker客户端如果配置中添加了insecure-registary配置&#xff0c;就不需要在docker 客户端配置上对应证书&#xff0c;如果不配置要在/etc/docker/certs.d/目…

如何选择适合自己的电源?主机的小伙伴们

如何选择适合自己的电源&#xff1f; 首先我们要学会简单的了解电源&#xff0c;掌握一些关于电源的基础知识。 学会从整体上看待它&#xff0c;然后分析电源的各个元件&#xff0c;以了解一些基本且重要的元件。 比如从电源的分类、电源的铭牌参数信息、电源的结构、材质、品…

强大的文本编辑器:Sublime Text for Mac注册激活版

Sublime Text for Mac是一款功能强大的文本编辑器&#xff0c;特别适合程序员和开发者使用。它提供了丰富的功能&#xff0c;如智能代码补全、语法高亮、自定义快捷键、项目管理、多行选择、自动保存等&#xff0c;以提高代码编写效率和舒适度。此外&#xff0c;Sublime Text还…

网络: DHCP 协议简介

文章目录 1. 前言2. DHCP 协议简介2.1 DHCP 客户端广播 DHCPDISCOVER 消息2.2 DHCP 服务器回复 DHCPOFFER 消息2.3 DHCP 客户端广播 DHCPREQUEST 消息2.4 DHCP 服务器回复 DHCPACK 消息2.5 剩余的工作 3. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&…

LeetCode hard也就这么回事

给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 1&#xff1a; 输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]] 输出&#xff1a;[1,1,2,3,4,4,5,6] 解释&#xff1a;链表数组如下&…

Day72:WEB攻防-业务逻辑篇水平越权垂直越权未授权访问检测插件SRC项目

目录 逻辑越权-检测原理-水平&垂直&未授权 水平越权&#xff1a;同级别的用户之间权限的跨越 垂直越权&#xff1a;低级别用户到高级别用户权限的跨越 未授权访问&#xff1a;无登录用户就能直接访问到需验证应用 逻辑越权-检测项目-BURP插件&对比项目 Xia_Y…

【开源鸿蒙】编译OpenHarmony轻量系统QEMU RISC-V版

文章目录 一、背景介绍二、准备OpenHarmony源代码三、准备hb命令3.1 安装hb命令3.2 检查hb命令 四、编译RISC-V架构的OpenHarmony轻量系统4.1 设置hb构建目标4.2 启动hb构建过程 五、问题解决5.1 hb set 报错问题解决 六、参考链接 开源鸿蒙坚果派&#xff0c;学习鸿蒙一起来&a…

【操作系统】以Pthread线程库为例详解多线程并发运行的特点

目录 写在开头 1.线程的创建 2.主线程与子线程的结束顺序 3.线程之间的数据共享与并发执行 4.蒙特卡洛法求pi&#xff08;单线程&#xff09; 5.蒙特卡洛法求pi&#xff08;多线程&#xff09; 写在最后 写在开头 近期准备重学操作系统&#xff0c;感觉还是有很多细节的…

通过切面编程(AOP)实现不同字段转换为同一字段

文章目录 前言一、切面编程(AOP)是什么&#xff1f;二、demo样例1.实体类a.新增订单b.更新订单b.日志实体类 2.实现相关a.类型转换接口类b.类型转换接口实现类c.自定义注解d.切面配置e.运行 三、结果示例四、其他 前言 项目中有很多场景需要去记日志&#xff0c;&#xff0c;也…

深入浅出前端本地储存

引言 2021 年&#xff0c;如果你的前端应用&#xff0c;需要在浏览器上保存数据&#xff0c;有三个主流方案&#xff1a; CookieWeb Storage (LocalStorage)IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史…

Python学习:列表

Python 列表概念 在Python中&#xff0c;列表&#xff08;List&#xff09;是一种有序、可变、允许重复元素的数据结构。列表使用方括号 ​[]​来表示&#xff0c;可以包含任意类型的元素&#xff0c;如整数、字符串、列表等。 Python 访问列表中的值 在Python中&#xff0…

BI(商业智能):开启数据驱动的未来

在当今信息时代&#xff0c;企业和组织面临着大量的数据和信息。这些数据包含了各种各样的信息&#xff0c;从市场趋势和消费者行为到销售数据和供应链信息。对于企业而言&#xff0c;利用这些数据来做出明智的决策&#xff0c;提高效率和竞争力变得尤为重要。而商业智能&#…

Learn OpenGL 22 高级光照与Gamma校正

高级光照 Blinn-Phong 冯氏光照不仅对真实光照有很好的近似&#xff0c;而且性能也很高。但是它的镜面反射会在一些情况下出现问题&#xff0c;特别是物体反光度很低时&#xff0c;会导致大片&#xff08;粗糙的&#xff09;高光区域。下面这张图展示了当反光度为1.0时地板会…

JS+CSS3点击粒子烟花动画js特效

JSCSS3点击粒子烟花动画js特效 JSCSS3点击粒子烟花动画js特效

docker harbor.v2.9.2搭建镜像无法下载问题解决

在通过部署docker harbor时&#xff0c;采用的是离线包的方式&#xff0c;当解压压缩包后&#xff0c;执行prepare脚本步骤中有一步是要获取prepare:v2.9.2版本镜像 结果执行脚本时报如下错误&#xff1a; Unable to find image goharbor/prepare:v2.9.2 locally 这时候我们就…

若依ruoyi-vue中的文件上传和下载

文章目录 文件上传后端实现前端实现 文件下载后端实现前端实现 在若依&#xff08;Ruoyi&#xff09;框架中&#xff0c;结合 Vue 前端框架&#xff0c;文件的上传和下载通常使用以下方法实现&#xff1a; 文件上传 若依现成的功能里面没有文件上传&#xff0c;但是集成了文件…

探索智慧农业项目方案,开启农业智能化新篇章

1. 背景 随着科技的飞速发展和全球人口的不断增长&#xff0c;传统农业模式已难以满足日益增长的粮食和农产品需求。同时&#xff0c;气候变化、资源短缺等环境问题也对农业生产带来了巨大挑战。因此&#xff0c;智慧农业作为一种集成了现代信息技术和农业生产的创新模式&#…

位图与布隆过滤器

目录 一、位图 1、问题用位图来解决&#xff1a; 二、 布隆过滤器 1、将哈希与位图结合&#xff0c;即布隆过滤器 2.布隆过滤器的查找 3.布隆过滤器的删除 4.布隆过滤器优点 5、布隆过滤器缺陷 三、海量数据处理问题&#xff1a; 一、位图 问题1&#xff1a;给40亿个不…