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'

相关推荐

  1. ECMAScript 6

    2024-03-20 19:02:02       44 阅读
  2. ECMAScript2015(ES6)

    2024-03-20 19:02:02       47 阅读
  3. ECMAScript6详解

    2024-03-20 19:02:02       56 阅读
  4. ECMAScript 6之Map

    2024-03-20 19:02:02       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-20 19:02:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-20 19:02:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-20 19:02:02       82 阅读
  4. Python语言-面向对象

    2024-03-20 19:02:02       91 阅读

热门阅读

  1. Http的缓存有哪些

    2024-03-20 19:02:02       48 阅读
  2. rust学习(简单handler实现)

    2024-03-20 19:02:02       40 阅读
  3. 第1章:Python基础:变量与表达式的深度解析

    2024-03-20 19:02:02       42 阅读
  4. Redis热点数据和冷数据的理解

    2024-03-20 19:02:02       40 阅读
  5. 洛谷刷题 | P8635 [蓝桥杯 2016 省 AB] 四平方和

    2024-03-20 19:02:02       42 阅读
  6. 用c语言统计m~n之间素数的个数,并求素数的和。

    2024-03-20 19:02:02       37 阅读
  7. 定时任务框架

    2024-03-20 19:02:02       44 阅读
  8. Rust基础教程

    2024-03-20 19:02:02       35 阅读
  9. 前端项目构建过程中涉及低代码部分思考

    2024-03-20 19:02:02       40 阅读
  10. H5与原生交互方式

    2024-03-20 19:02:02       39 阅读
  11. 游戏防沉迷系统相关内容

    2024-03-20 19:02:02       45 阅读