ES6笔记2
ES6笔记2
Promise
Promise 是 ES6 引入的异步编程的新解决方案,语法上是一个构造函数
一共有3种状态,pending(进行中)、fulfilled(已成功)和rejected(已失败)
特点:只有异步操作可以决定当前处于的状态,并且任何其他操作无法改变这个状态;
const promise = new Promise((resolve, reject) => {
if (success) {
resolve(value); // 成功
} else {
reject(error); // 失败
}
});
Promise对象需要通过构造函数来引入,构造函数需要2个参数,
resolve
和reject
异步操作执行成功时。会将异步操作结果作为参数传入resolve函数执行,失败则会将异步操作的错误信息作为参数传入reject函数执行
我们可以通过promise
对象下的then
方法来给resolve
和reject
设置回调函数
promise.then(function(value) {
console.log('我成功了');
}, function(error) {
console.log('我失败了');
});
then方法接收两个回调函数,第一个是成功的回调,第二个是失败的回调,第二个可不填
promise
使用
const p = new Promise((resolve, reject) => {
setTimeout(() => {
// resolve('我成功了');
reject('我失败了');
}, 2000)
})
p.then(data => {
console.log(data);
}).catch(error => {
console.error(error);
})
Promise.prototype.catch()
用于指定发生错误时的回调函数。
Set
允许你存储任何类型的唯一值,无论是原始值或者是对象引用
let set = new Set();
set.add('加一个值');
set.add('再加一个');
console.log(set.has('再加一个')); //true
console.log(set.size); //2
set.delete('加一个值');
console.log(set.has('加一个值')); //false
console.log(set.size); //1
set.clear(); //清空容器
其实可以把set
对象看作是一个容器,可以增删改查
Map
类似于对象,也是键值对的集合,但是“键” 的范围不限于字符串,各种类型的值(包括对象)都可以当作键
const m = new Map();
m.set('name', 'ljc'); //用set方法添加键值对
m.set('age', 20);
m.set('sex', '男');
m.get('name'); //获取属性值
console.log(m.size); //3
m.has('sex'); //true 判断是否含有
m.delete('age'); //删除
m.clear(); //清空
Class
在类中可以直接定义方法,实际上类的所有方法都定义在类的prototype属性上面。在类的实例上面调用方法,其实就是调用原型上的方法。
class Person{
constructor(id,name,age){
this.id = id;
this.name = name;
this.age = age;
}
}
静态方法
在一个方法前,加上static关键字,表示该方法不会被实例继承,而是直接通过类来直接调用,这就称为“静态方法”。
class Foo{
static sta(){
return 'ljc';
}
}
Foo.sta(); //'ljc'
如果静态方法包含this关键字,这个this指向类,而不是实例。
类继承
constructor(money, car, house, company) {
this.money = money;
this.car = car;
this.house = house;
this.company = company;
}
manage = function () {
console.log('我是管理的方法');
}
}
class Son extends Father {
constructor(money,car,house,company) {
super(money, car, house, company);
}
}
通过extends
关键字来实现继承,子类必须在constructor
方法中调用super
方法,同时继承了this指向
取值函数(getter)和存值函数(setter)
set
方法一定要传参数
class MyClass {
constructor() {
// ...
}
get ljc() {
return 'get';
}
set ljc(value) {
console.log('set: '+value);
}
}
let inst = new MyClass();
inst.ljc = 123;//修改
// set: 123
inst.ljc//访问
// 'get'
注意点
- 类的方法内部如果含有
this
,它默认指向类的实例,必须注意!!! - 不存在变量提升
数值扩展
Number.isFinite
用来检查一个数值是否为有限的
console.log(Number.isFinite(5));//true
console.log(Number.isFinite(NaN));//false
Number.isNaN()
判断是否是NaN
console.log(Number.isNaN(NaN));//true
console.log(Number.isNaN(5));//false
Number.isInteger
用来判断一个数值是否为整数
console.log(Number.isInteger(5.73));//false
console.log(Number.isInteger(5.0));//true
console.log(Number.isInteger(5));//true
Math.trunc()
去除小数,返回整数部分
console.log(Math.trunc(5.85));//5
对象扩展
Object.is
比较两个值是否严格相等,与===
基本一致
Object.assign
对象的合并
let obj1 = {name: 'ljc',age: 20};
let obj2 = {sex: '男'}
let obj3 = {};
Object.assign(obj3,obj1,obj2);
console.log(obj3);//{name: 'ljc',age: 20,sex: '男'}
ES7 新特性
Includes
方法用来检测数组中是否包含某个元素,返回布尔类型值
指数运算符**
,用来实现幂运算,功能与 Math.pow 结果相同
ES8 新特性
async和await
当你需要异步事件执行完后再执行下面代码时,就可以采用这种方法
async
函数返回一个 Promise 对象,可以使用then
方法添加回调函数。当函数执行的时候,一旦遇到await
就会先返回,等到异步操作完成,再接着执行函数体内后面的语句
async function aw() {
let result = await new Promise((resolve, reject) => {
setTimeout(function () {
console.log('我来了');
resolve(2);
}, 2000);
})
console.log(result);
console.log(1234);
}
aw();//我来了 2 1234
从输出结果可以看出,当定时器执行完才输出1234
ES6+
String.trimStart() 与 String.trimEnd()
去除前面或后面的空格
Promise.prototype.finally()
不管promise最后的状态,在执行完then或catch指定的回调函数以后,都会执行finally方法指定的回调函数。
Object.entries()
返回的数组的元素是键值对数组
const ljc = {
age: 20,
name: 'ljc',
sex: 'nan'
}
console.log(Object.entries(ljc));
//[ [ 'age', 20 ], [ 'name', 'ljc' ], [ 'sex', 'nan' ] ]
Bigint类型
数字运算结果能取的值更长
globalThis对象
永远指向全局对象
在ES9-11还新增了很多api,以后再总结吧,现在就了解了一下
ES6笔记2的更多相关文章
- ES6笔记(5)-- Generator生成器函数
系列文章 -- ES6笔记系列 接触过Ajax请求的会遇到过异步调用的问题,为了保证调用顺序的正确性,一般我们会在回调函数中调用,也有用到一些新的解决方案如Promise相关的技术. 在异步编程中,还 ...
- ES6笔记系列
ES6,即ECMAScript 6.0,ES6的第一个版本是在2015年发布的,所以又称作ECMAScript 2015 如今距ES6发布已经一年多的时间,这时候才去学,作为一个JSer,羞愧羞愧,还 ...
- ES6笔记(1) -- 环境配置支持
系列文章 -- ES6笔记系列 虽然ES6已经发布一年多了,但在各大浏览器之中的支持度还不是很理想,在这查看ES6新特性支持度 Chrome的最新版本浏览器大部分已经支持,在Node.js环境上支持度 ...
- ES6笔记(2)-- let的块级作用域
系列文章 -- ES6笔记系列 一.函数级作用域 我们都知道,在ES6以前,JS只有函数级作用域,没有块级作用域这个概念 没有块级作用域,有利有弊,利于方便自由,弊于作用域内的变量容易被共享,例如这个 ...
- ES6笔记(3)-- 解构赋值
系列文章 -- ES6笔记系列 解构赋值,即对某种结构进行解析,然后将解析出来的值赋值给相关的变量,常见的有数组.对象.字符串的解构赋值等 一.数组的解构赋值 function ids() { ret ...
- ES6笔记(4)-- Symbol类型
系列文章 -- ES6笔记系列 Symbol是什么?中文意思是标志.记号,顾名思义,它可以用了做记号. 是的,它是一种标记的方法,被ES6引入作为一种新的数据类型,表示独一无二的值. 由此,JS的数据 ...
- ES6笔记(6)-- Set、Map结构和Iterator迭代器
系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iter ...
- ES6笔记(7)-- Promise异步编程
系列文章 -- ES6笔记系列 很久很久以前,在做Node.js聊天室,使用MongoDB数据服务的时候就遇到了多重回调嵌套导致代码混乱的问题. JS异步编程有利有弊,Promise的出现,改善了这一 ...
- ES6 笔记汇总
ES6 笔记汇总 二.ES6基础-let和const命令 三.变量的解构赋值 四.字符串的拓展 五.正则表达式的拓展 ...将会持续更新,敬请期待
随机推荐
- 强大的工具(一):Capslock+ 2.x版本
2020.07.09 更新 作者更新了3.x版本,因此更新了3.x版本的博客,可以戳这里. 本篇文章介绍的是2.x版本. 1 Capslock+简介 Capslock+利用了键盘少用的Capslock ...
- Ambassador-07-熔断
Ambassador的熔断机制的定义 circuit_breakers: - priority: <string> max_connections: <integer> max ...
- 通过ECK部署elasticsearch集群(k8s+elasticsearch+kibana)
参考 https://blog.51cto.com/14783669/2558785
- hdu2100 26进制加法
题意: 给你两个26进制数,让你算出他们两个的和. 思路: 水题不解释了,注意这样的数据 AAA AAA 输出A #include<stdio.h> #include ...
- 将Android源码导入eclipse中的方法以及编译Android源码指定模块
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53365659 将android源码导入eclipse.androidstudio. ...
- Metasploit Framework(MSF)的使用
目录 Metasploit 安装Metasploit 漏洞利用(exploit) 攻击载荷(payload) Meterpreter MS17_010(永恒之蓝) 辅助模块(探测模块) 漏洞利用模块 ...
- Andrew Ng机器学习算法入门((五):矩阵和向量
矩阵定义 数学上,一个m×n的矩阵是一个由m行n列元素排列成的矩形阵列 使用Aij来获取矩阵中第i行j列的数据 向量的定义 向量就是n行1列的特殊矩阵 由于向量仅仅只有1行,那么通过一个变量i来指定获 ...
- 还在一个模块打天下嘛?你知道引入Jetpack架构后,你的App会发生哪些奇妙的变化吗?
前言 上篇文章我给大家分享了我对Android架构的理解,从思想层面去讲述架构的演进过程.很多小伙伴读完后拍手叫好,表示还想听我讲一下对Jetpack 架构的看法,本着帮人帮到底的精神,今天我将再次动 ...
- Mac 右键强化工具-超级右键
App Store 功能介绍 1.新建文件 默认支持新建:TXT/RTF/XML/Word/Excel/PPT/WPS文字/WPS表格/WPS演示/Pages/Numbers/keynote/Ai/P ...
- php 获取某数组中出现次数最多的值(重复最多的值)与出现的次数
1.$arr = array(7,7,8,9,10,10,10); $arr = array_count_values($arr); // 统计数组中所有值出现的次数 arsort($arr); ...