
JS高级,JS模块化,promise
文章平均质量分 96
这里是我学习JS高级、JS模块化和promise时的笔记。
小R.
总之岁月漫长,然而值得期待
展开
-
关于promise,你需要掌握这些
文章目录一、什么是promise1. 抽象表达:2. 具体表达:二、为什么要用promise1. 指定回调函数的方式更加灵活2. 支持链式调用,可以解决回调地狱问题三、promise初体验四、实践练习1:fs读取文件五、实践练习2:AJAX请求六、封装fs读取文件操作七、util.promisify方法进行promise风格化八、promise封装ajax请求九、十、十一、十二、十三、一、什么是promise1. 抽象表达:promise是一门新的技术(ES6规范)promise是JS中进行异步编原创 2021-01-13 08:38:50 · 965 阅读 · 2 评论 -
关于JS模块化
一、什么是模块 / 模块化将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起。块的内部数据 / 实现是私有的,只是向外部暴露一些接口(方法)与外部其它模块通信。二、为什么要模块化网站正在变成Web应用程序,随着网站规模的扩大,代码的复杂性也在增加,需要高度解耦的JS文件/模块。变量、函数、对象等名字容易冲突,还会造成全局变量被污染。程序复杂时要引入很多类库,容易造成文件依赖混乱。模块化能够减低复杂度,提高解耦性。三、模块化的好处避免命名冲突(减少命名空间污染原创 2020-12-01 09:06:39 · 933 阅读 · 0 评论 -
JS高级(11)—— 线程机制与事件机制
一、进程与线程进程:程序的一次执行,它占有一片独有的内存空间线程:CPU的基本调度单位,是程序执行的一个完整流程进程与线程应用程序必须运行在某个进程的某个线程上一个进程中一般至少有一个运行的线程:主线程,进程启动后自动创建一个进程中也可以同时运行多个线程,我们会说程序是多线程运行的一个进程内的数据可以供其中的多个线程直接共享多个进程之间的数据是不能直接共享的线程池:保存多个线程对象的容器,实现线程对象的反复利用何为多进程与多线程多进程:一应用程序可以同时启动原创 2020-11-24 20:28:31 · 261 阅读 · 0 评论 -
JS高级(10)—— 继承模式
方式1:原型链继承套路定义父类型构造函数给父类型的原型添加方法定义子类型的构造函数创建父类型的对象赋值给子类型的原型将子类型原型的构造属性设置为子类型给子类型原型添加方法创建子类型的对象: 可以调用父类型的方法关键子类型的原型为父类型的一个实例对象//父类型function Supper() { this.supProp = 'Supper property'}Supper.prototype.showSupperProp = function () {原创 2020-11-23 17:21:24 · 192 阅读 · 0 评论 -
JS高级(9)—— 对象创建模式
方式一:Object构造函数模式套路:先创建空Object对象,再动态添加属性/方法适用场景:起始时不确定对象内部数据问题:语句太多// 先创建空Object对象var p = new Object();// 再动态添加属性/方法p.name = 'Tom';p.age = 12;p.setName = function (name) { this.name = name};//测试console.log(p.name, p.age);p.setName('Bob');原创 2020-11-23 11:50:46 · 264 阅读 · 0 评论 -
JS高级(8)—— 闭包
一、变量作用域变量根据作用域的不同分为两类:全局变量和局部变量函数内部可以使用全局变量函数外部不可以使用局部变量当函数执行完毕,本作用域内的函数变量会销毁二、闭包到底是什么闭包指有权访问另一个函数作用域中变量的函数。—>闭包是函数简单理解就是:一个作用域可以访问另外一个函数内部的局部变量。三、产生闭包的条件当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时,就产生了闭包。被访问的局部变量所在的函数被称为“闭包函数”。函数嵌套内部函数引用了外部函数的数据(变原创 2020-11-22 09:34:54 · 374 阅读 · 2 评论 -
JS高级(7)—— 作用域与作用域链
一、作用域理解就是一块"地盘", 一个代码段所在的区域它是静态的(相对于上下文对象), 在编写代码时就确定了分类全局作用域函数作用域没有块作用域(ES6有了)作用隔离变量,不同作用域下同名变量不会有冲突例题:var a = 10, b = 20;function fn(x) { var a = 100, c = 300; console.log('fn()', a, b, c, x); function bar(x) { var a =原创 2020-11-21 15:42:59 · 230 阅读 · 0 评论 -
JS高级(6)—— 执行上下文与执行上下文栈
一、变量提升和函数提升变量声明提升通过var定义(声明)的变量,在定义语句之前就可以访问到值:undefined函数声明提升通过function声明的函数,在之前就可以直接调用值:函数定义(对象)//面试题 : 输出 undefined var a = 3 function fn () { console.log(a) var a = 4 } fn()console.log(b) //undefined 变量提升fn2() //可调用原创 2020-11-20 21:02:09 · 160 阅读 · 0 评论 -
JS高级(5)—— 原型与原型链
一、函数的prototype属性每个函数都有一个prototype属性,它默认指向一个Object空对象(即称为: 原型对象) console.log(Date.prototype, typeof Date.prototype) function Fun () { } console.log(Fun.prototype) // 默认指向一个Object空对象(没有我们的属性)2. 原型对象中有一个属性constructor,它指向函数对象console.log(Date.pr原创 2020-11-20 17:21:19 · 296 阅读 · 0 评论 -
JS高级(4)—— 关于 函数
一、什么是函数实现特定功能的n条语句的封装体只有函数是可以执行的, 其它类型的数据不能执行function showInfo (age) { if(age<18) { console.log('我未成年') } else if(age>60) { console.log('我老了') } else { console.log('我要努力工作') } } showInfo(17)showInfo(20)sh原创 2020-11-17 08:22:44 · 252 阅读 · 0 评论 -
JS高级(3)—— 关于 对象
一、什么是对象代表现实中的某个事物,是该事物在编程中的抽象多个数据的集合体(封装体)用于保存多个数据的容器var p = { name: 'Tom', age: 12}二、为什么要用对象便于对多个数据进行统一管理三、对象的组成属性代表现实事物的状态数据由属性名和属性值组成属性名都是字符串类型,属性值是任意类型方法代表现实事物的行为数据是特别的属性—>属性值是函数var p = { name: 'Tom', age:原创 2020-11-16 21:41:47 · 148 阅读 · 0 评论 -
JS高级(2)—— 数据 变量 内存
一、什么是数据存储于内存中代表特定信息的“东西”, 本质就是0101二进制具有可读和可传递的基本特性万物(一切)皆数据,函数也是数据程序中所有操作的目标:数据算术运算逻辑运算赋值调用函数传参二、什么是内存内存条通电后产生的存储空间(临时的)产生和死亡: 内存条(集成电路板) —>通电—>产生一定容量的存储空间—>存储各种数据—>断电—>内存全部消失内存的空间是临时的,而硬盘的空间是持久的一块内存包含2个数据内部存储的数据(一般数据/地原创 2020-11-13 22:13:51 · 278 阅读 · 0 评论 -
JS高级(1)—— 关于 数据类型
一、分类(2大类)1. 基本(值)类型Number: 任意数值String: 任意文本Boolean: true / falseundefined: undefinednull: null2. 对象(引用)类型Object: 任意对象var obj ={}Function: 特别的对象类型(可执行)function test(){ var a = 3; }Array: 特别的对象类型(根据数值下标操作,内部数据有序)var arr = [3,'a原创 2020-11-12 15:14:44 · 178 阅读 · 0 评论