随笔分类 -  ES6知识

摘要:前言:这篇文章应该会和你见到的大部分手写Promise文章都不一样,文中不会讲到Promises/A+规范,也不会提到Promise.race / race等语法糖。在本文中,我会大量使用到面向对象的思维方式,并且只关注Promise的核心思想及其实现,相信在您认真看完之后,会对Promise产生一 阅读全文
posted @ 2022-05-18 22:11 古兰精 阅读(411) 评论(0) 推荐(0) 编辑
摘要:array.map() 是一个非常有用的映射函数:它接收一个数组和一个映射函数,然后返回一个新的映射数组。 但是它只能一对一的映射。现在有一个替代 array.map() 的方法:array.flatMap(),这个方法给了我们映射的能力,同时也可以在生成的映射数组中删除,甚至添加新的项目。 一、更 阅读全文
posted @ 2022-04-15 22:13 古兰精 阅读(488) 评论(0) 推荐(0) 编辑
摘要:一、基本介绍 1、语法定义 for await...of 语句创建一个循环,该循环遍历异步可迭代对象以及同步可迭代对象,包括: 内置的 String, Array,类似数组对象 (例如 arguments 或 NodeList),TypedArray, Map, Set 和用户定义的异步/同步迭代器 阅读全文
posted @ 2022-03-16 22:07 古兰精 阅读(5440) 评论(0) 推荐(0) 编辑
摘要:一、Map 和 WeakMap 有什么不同之处 1、Map 是为了解决对象中的 key 只能为字符串的缺陷 //基本的对象 const obj = { 'name': '张飞',, 'age': 18 } // Map let m = new Map() a.set(obj,1) 我们的 Map 是 阅读全文
posted @ 2021-09-29 11:26 古兰精 阅读(1290) 评论(1) 推荐(0) 编辑
摘要:一、内部原理 exports = module.exports = {} exports 是 module.exports 的引用,怎么理解这句话呢?大概就是 var a = {}; var b = a; a 和 b 之间的关系吧。 1、require:在文件中 require 实际引入的是 mod 阅读全文
posted @ 2021-08-31 19:07 古兰精 阅读(2990) 评论(0) 推荐(0) 编辑
摘要:在 es6 之前 JS 一直没有自己的模块语法,为了解决这种尴尬就有了require.js等AMD或CMD方式的出现。在 es6 发布之后 JS 又引入了 import 的概念使得不清楚两者之间的区别的同学在实际使用过程中造成了自己的误解,在查阅了相关资料之后在此记录下自己的小小见解。 一、requ 阅读全文
posted @ 2021-08-06 23:19 古兰精 阅读(3225) 评论(0) 推荐(0) 编辑
摘要:一、Async 函数的错误处理 async 函数的语法不难,难在错误处理上。先来看下面的例子: 我们可以看到 Promise 报错后,a = await 1 并没有被执行。即当 async 函数中只要一个 await 出现 reject 状态,则后面的 await 都不会被执行。 解决办法是:可以添 阅读全文
posted @ 2021-05-17 22:08 古兰精 阅读(2413) 评论(0) 推荐(0) 编辑
摘要:ES6 中引入了 Proxy 代理与 Reflect 反射 这两个新的内置模块。我们可以利用 Proxy 和 Reflect 来实现对于对象的代理劫持操作,类似于 Object.defineProperty() 的效果,不过 Reflect & Proxy 远远比它强大。 大多数开发者都了解这两个新 阅读全文
posted @ 2020-11-20 10:56 古兰精 阅读(2171) 评论(0) 推荐(1) 编辑
摘要:ES6都用了这么久了,我们都知道箭头函数没有 this,但是正好昨天做项目的时候纠结了一下这个问题,网上找了几篇排名比较靠前的文章,但都没有完全理解,或者说总觉得文章的说法并不完全正确。所以想要自己去实践一下得到自己的理解。 先来看看MDN怎么说: 箭头函数不会创建自己的this,它只会从自己的作用 阅读全文
posted @ 2020-06-10 22:46 古兰精 阅读(1405) 评论(0) 推荐(0) 编辑
摘要:一、什么是reflect对象 Reflect对象是一个全局的普通的对象。Reflect的原型就是Object。 我们首先来验证下 看看Reflect的原型是否是Object, 基本代码如下: let obj = {}; console.log(Reflect.__proto__ Object.pro 阅读全文
posted @ 2020-05-18 23:05 古兰精 阅读(634) 评论(0) 推荐(0) 编辑
摘要:Proxy可以理解成,在目标对象之前架设一层 "拦截",当外界对该对象访问的时候,都必须经过这层拦截,而Proxy就充当了这种机制,类似于代理的含义,它可以对外界访问对象之前进行过滤和改写该对象。 如果对vue2.xx了解或看过源码的人都知道,vue2.xx中使用 Object.defineProp 阅读全文
posted @ 2020-05-18 18:20 古兰精 阅读(1367) 评论(0) 推荐(0) 编辑
摘要:打开 Chrome 控制台,输入 window.Proxy ,你会发现 JavaScript 已经内置了一个全局的 Proxy 对象,请问这个对象是做什么用的?其实你用关键词「Proxy MDN」搜索一下,就能得到一个详细的教程。(在关键词后面加 MDN 是一个前端必备的小技巧哦)我今天只做一个简单 阅读全文
posted @ 2020-05-15 23:48 古兰精 阅读(2129) 评论(0) 推荐(0) 编辑
摘要:首先了解下let与var的区别,主要有以下3点: 1、var在js中是支持预解析的,而let不支持预解析,也就是变量提升的区别 console.log(a) var a = 22; // 打印undefined console.log(b) let b = 22 // 报错:b is not def 阅读全文
posted @ 2020-05-07 22:44 古兰精 阅读(744) 评论(0) 推荐(0) 编辑
摘要:fetch()方法与XMLHttpRequest类似,fetch也可以发起ajax请求,但是与XMLHttpRequest不同的是,fetch方式使用promise,相比较XMLHttpRequest更加简洁。 一、Fetch是什么 1、Fetch 是一个现代的概念,等同于 XMLHttpReque 阅读全文
posted @ 2019-08-22 22:58 古兰精 阅读(503) 评论(0) 推荐(0) 编辑
摘要:为什么会出现暂时性死区? 先来看看 ES6 标准中对 let/const 声明中的解释 第13章,有如下一段文字:The variables are created when their containing Lexical Environment is instantiated but may n 阅读全文
posted @ 2019-08-02 17:12 古兰精 阅读(1093) 评论(0) 推荐(0) 编辑
摘要:一、async用法 async作为一个关键字放到函数前面,用于表示函数是一个异步函数。异步函数也就意味着该函数的执行不会阻塞后面代码的执行。 异步函数语法很简单,就是在函数前面加上async 关键字,来表示它是异步的。 那怎么调用呢?async 函数也是函数,平时我们怎么使用函数就怎么使用它,直接加 阅读全文
posted @ 2019-07-31 21:33 古兰精 阅读(817) 评论(0) 推荐(0) 编辑
摘要:1、强制要求参数 ES6提供了默认参数值机制,允许你为参数设置默认值,防止在函数被调用时没有传入这些参数。 在下面的例子中,我们写了一个required()函数作为参数a和b的默认值。这意味着如果a或b其中有一个参数没有在调用时传值,会默认required()函数,然后抛出错误。 2、强大的redu 阅读全文
posted @ 2018-06-13 23:06 古兰精 阅读(415) 评论(0) 推荐(0) 编辑
摘要:1、现象 看redux的时候发现官网的教程里直接import了一个文件夹,我再三确定没有看错, 是一个 文件夹 (Directory), 它直接 import了一个目录!这个 文件夹/目录 底下还有一个index.js文件。 js文件只能用index.js,换其他名字都会报错。我使用的是webpac 阅读全文
posted @ 2018-04-20 11:57 古兰精 阅读(36886) 评论(0) 推荐(6) 编辑
摘要:一、Object.entries() 方法的使用 1、Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性) 2、实例代码: const obj = { fo 阅读全文
posted @ 2018-01-11 15:35 古兰精 阅读(2094) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示