JS-为什么说 async/await是generator的语法糖?

关于async的介绍,在阮一峰的ES6入门教程中说到: async 函数是什么?一句话,它就是 Generator 函数的语法糖。 可是,为什么这么说呢? 首先,比如说有一个异步操作,使用 async/await 语法来以同步模拟异步操作。 使用 async/await 实现一个 sleep ...

2019-04-14 19:13:46

阅读数 170

评论数 0

JS-Generator 执行器的实现

Generator 是一个异步操作的容器。它的自动执行需要一种机制,当异步操作有了结果,自动交回执行权。 两种方法可以实现执行器: 回调函数。将异步操作包装成 Thunk 函数,在回调函数里面交回执行权; Promise 对象。将异步操作包装成 Promise 对象,用 then 方法中交回执行...

2019-04-14 18:59:41

阅读数 107

评论数 0

JS-原型,原型链,基于原型和class方式的继承,一篇文章就够了!

原型 每个函数(构造函数)都有一个 prototype 属性,指向该函数(构造函数)的原型对象。实例没有 prototype 属性,但是有 __proto__ 属性。函数同时有 prototype 和 __proto__ 属性。 function Person(name) { this.nam...

2019-04-12 15:44:58

阅读数 40

评论数 0

JS- async和defer对script脚本加载的影响

直接使用script脚本的话,html会按照顺序来加载并执行脚本,在脚本加载&执行的过程中,会阻塞后续的DOM渲染。 这是因为 UI 渲染线程与 JS 引擎是互斥的,当 JS 引擎执行时 UI 线程会被挂起。 defer 如果script标签设置了该属性,则浏览器会异步的下载该文件...

2019-04-11 11:01:07

阅读数 54

评论数 0

JS-前端使用Blob和File读取文件

目录 Blob及其属性和方法 File FileReader及其属性和方法 URL及其属性和方法 历史上,JavaScript 无法处理二进制数据。如果一定要处理的话,只能使用 charCodeAt() 方法,一个个字节地从文字编码转成二进制数据,还有一种办法是将二进制数据转成 Base64 ...

2019-04-07 15:10:16

阅读数 757

评论数 0

Node-内置模块:zlib 压缩

目录 概述 压缩和解压 示例 1、概述 做过 web 性能优化的同学,对性能优化大杀器 gzip 应该不陌生。浏览器向服务器发起资源请求,比如下载一个 js 文件,服务器先对资源进行压缩,再返回给浏览器,以此节省流量,加快访问速度。 浏览器通过 HTTP 请求头部里加上 Accep...

2018-08-07 22:41:56

阅读数 354

评论数 0

Node-内置模块:http

目录 概述 http 服务端 http 客户端 1、概述 我们知道传统的 HTTP 服务器是由 Aphche 、 Nginx 、 IIS 之类的软件来搭建的,但是 Nodejs 并不需要, Nodejs 提供了 http 模块,自身就可以用来构建服务器。http 模块内部封装了高效的...

2018-07-30 21:38:23

阅读数 253

评论数 0

Node-内置模块:缓冲器 Buffer

目录 概述 创建 Buffer 实例 判断数据是否为 buffer 判断两个 buffer 是否相等 写入 buffer: buf.write() 读取 buffer: buf.toString() 拷贝 buffer: buf.copy() 合并 buffer: buf.cancat() 切...

2018-07-25 18:53:46

阅读数 111

评论数 0

Node-内置模块:集群 cluster

目录 概述 cluster 的属性和方法 cluster 的事件 worker 的属性和方法 worker 的事件 cluster 的实现原理 1、概述 Node.js 默认单进程运行,对于多核 CPU 的计算机来说,这样做效率很低,因为只有一个核在运行,其他核都在闲置,面对单进程单...

2018-07-12 16:38:26

阅读数 302

评论数 0

Node-内置模块:子进程 child_process

目录 概述 创建子进程的方法 子进程的事件 1、概述 我们都知道 Node.js 是以单线程的模式运行的,但它使用的是事件驱动来处理并发,这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提高性能。 每个子进程总是带有三个流对象:child.stdin, child.std...

2018-07-11 18:38:46

阅读数 578

评论数 0

Node-内置模块:全局变量 global

概述 模块内部的变量 setImmediate 和 clearImmediate setTimeout 和 clearTimeout setInterval 和 clearInterval console process 1、概述 在浏览器 JavaScript 中,通常 window...

2018-07-10 21:43:39

阅读数 178

评论数 0

Node-内置模块:进程 process

目录 概述 属性 方法 事件 1、概述 process 是 node 的全局模块,作用比较直观。可以通过它来获得 node 进程相关的信息,比如运行 node 程序时的命令行参数。或者设置进程相关信息,比如设置环境变量。 2、属性 2.1 process.argv pr...

2018-07-10 18:03:40

阅读数 90

评论数 0

JS - 这一次彻底搞懂 "x == y" 的判断逻辑

javascript 是弱类型语言,在进行 == 运算的时候 ,如果等号两边的数值类型不同的时候,会进行类型转换。 1. 类型转换的逻辑算法 关于如何进行类型转换,ECMA 的标准里面有说明,如下所示: 归纳起来,是按照以下的顺序来执行判断逻辑的: 首先判断 x 和 y 的数据类...

2018-07-01 16:58:42

阅读数 208

评论数 0

Node-内置模块:模块系统 module

目录 模块的定义 模块包装器 模块内部作用域 module 对象 模块导入策略 module.exports 和 exports 的区别 1、模块的定义 在 Node.js 模块系统中,每个文件都被视为独立的模块。 通过 module.exports 或者 exports 来导出所...

2018-06-28 23:39:43

阅读数 297

评论数 0

Node-内置模块:路径 path

目录 获取路径/文件名/拓展名 路径组合 路径解析 获取相对路径 判断是否为绝对路径 1、获取路径/文件名/拓展名 获取路径:path.dirname(filepath) 获取文件名:path.basename(filepath) 获取扩展名:path.extname(filepa...

2018-06-28 12:03:29

阅读数 325

评论数 0

Node-内置模块:文件流 stream

目录 概述 createReadStream createWriteStream pipe 1、概述 stream 是 Node.js 提供的又一个仅在服务区端可用的模块,目的是支持“流”这种数据结构。 什么是流?流是一种抽象的数据结构。想象水流,当在水管中流动时,就可以从某个地方...

2018-06-27 16:09:30

阅读数 416

评论数 0

Node-内置模块:文件系统操作 fs

目录 概述 异步读取文件 同步读取文件 写文件 stat 文件是否存在 打开和关闭文件 删除文件 文件重命名 监听文件修改 追加文件内容 文件内容截取 创建目录 读取目录 删除目录 1、概述 Node.js 内置的 fs 模块就是文件系统模块,负责读写文件,提供了异步和同步的方法。 ...

2018-06-27 16:05:41

阅读数 136

评论数 0

JS-学习ES6之- Decorator 修饰器

目录 概述 类的修饰 方法的修饰 1、概述 用于给对象在运行期间动态的增加某个功能,职责等。相较通过继承的方式来扩充对象的功能,装饰器显得更加灵活,首先,我们可以动态给对象选定某个装饰器,而不用 hardcore 继承对象来实现某个功能点。其次:继承的方式可能会导致子类繁多,仅仅为了...

2018-06-16 22:00:47

阅读数 2795

评论数 0

JS-学习ES6之- class 的继承

目录 简介 Object.getPropertyOf() super 关键字 1、简介 class 可以通过 extends 关键字实现继承。 在子类继承父类的时候,在 constructor 中必须首先调用 super() 方法,然后才能使用 this 。 // 父类 cl...

2018-06-13 16:15:57

阅读数 71

评论数 0

JS-学习ES6之- class 的基本用法

目录 简介 constructor 方法 类的实例对象 私有方法和私有属性 class 的静态方法 class 的静态属性和实例属性 new.target 属性 1、简介 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。 ES6 提供了更接近传统语言的写法,引入...

2018-06-12 17:15:25

阅读数 112

评论数 0

提示
确定要删除当前文章?
取消 删除