最新文章

Promise 与 for 循环的几个题JavaScript

Promise 和 for 循环问题,循环需要上一次的结果 需要计算工序的时间,有开始时间,结束时间,下一道工序的开始的时间是上一道工序的结束时间,使用 promise 和 遍历实现 for 循环中的 promise 如何正确的 resolve promise 是异步的,需要到下一个 tick 才能执行 then,除非 break 或者 return,否则就是等 for 循环执行完毕才能 reso…

Promise 与 for 循环的几个题

12/4/20192 分钟阅读380

理解 js 的微任务(microtask)与宏任务(microtask)JavaScript

js 的特点 单线程 执行机制是基于 event loop 所有同步任务再主线程执行,形成执行栈 主线程之外有一个任务队列,只要一步任务有了运行结果,就在任务队列中放置一个事件 一旦执行栈的同步执行完毕,就去读取任务队列,寻找任务队列中放置的异步事件,异步事件结束等待状态,进入执行栈,开始执行 之前有写了一篇文章 js 引擎执行过程:运行机制,语法分析,创建函数调用栈,创建上下文,创建作用域链 ,…

理解 js 的微任务(microtask)与宏任务(microtask)

6/15/20193 分钟阅读470

理解 js 中的双精度浮点数的原因、原理和解决方法JavaScript

业务中常见的问题 原因和原理 js 所有的数字都遵循 IEE 754 标准,使用 64 位固定长度表示,这就是双精度浮点数的由来 这样做的目的是为了归一化处理数字,节省存储空间 64 位分为三部分 符号位(S):第 1 位符号位,0 代表正数,1 代表负数 指数为(E):中间 11 位指数位,代表次方数 位数位(M):最后 52 位是位数,超出的部分自动进 1 舍 0 转换公式 辅助工具: 十进制…

理解 js 中的双精度浮点数的原因、原理和解决方法

6/7/20194 分钟阅读490

js 设计模式-发布订阅模式(观察者模式)JavaScript

如果对 apply 的使用不太自信,可以看这篇文章 apply 、 call 、bind 三者的区别 什么是发布订阅模式(观察者模式) 订阅者可监听发布者发布的消息,一旦发布者有消息发布,那么订阅者就可以接收到消息,当然订阅者也可选择性订阅 发布订阅模式(观察者模式)实现条件 确定发布者 确定缓存列表(用于存储订阅者) 发布消息(接收消息) 最常见的发布订阅模式(观察者模式) dom 监听事件 发…

js 设计模式-发布订阅模式(观察者模式)

5/19/20192 分钟阅读350

理解 js 模块规范:CommonJS、AMD、CMD、UMD 和 ES6 moduleJavaScript

CommonJS 服务端模块规范,ES5 的 Nodejs 采用了这个规范 一个单独的文件就是一个模块,加载使用 require 方法读取文件 CommonJS 是同步的,只有加载完成才能执行后面的操作 这种方法适用于文件已经在硬盘中了,加载速度快,如果是服务端文件,就要用其他方式了 ADM(Require.js) 支持浏览器环境 AMD 是 Require.js 推广的时候定义的规范 AMD 是…

理解 js 模块规范:CommonJS、AMD、CMD、UMD 和 ES6 module

5/13/20193 分钟阅读320

理解 js 的面对对象编程、面向过程编程、命令式编程和函数式编程(声明式编程)JavaScript

面向对象编程 如果对 js 的原型,原型链,__proto__不熟悉,可以看我之前对 原型,继承,设计模式介绍 面向对象编程的特点 每一个对象都可以被看作一个用户清晰角色或者责任的小机器 有命名空间:一个有着对象所有功能的容器 有 class 类:对象属性与方法的定义 有 Object:类一个实例 有 Property:对象的属性 有 Methods:对象的方法 有 Constructor:对象的…

理解 js 的面对对象编程、面向过程编程、命令式编程和函数式编程(声明式编程)

5/13/20193 分钟阅读330

js 设计模式-工厂模式JavaScript

什么是工厂模式 当去买一个 🍔 的时候,无须得到 🍔 的原材料,只需要获得到 🍔 对应工厂模式:不暴露创建对象的具体逻辑,将创建对象的方法封装到一个函数中,这个函数就是一个工厂 工厂模式按照抽象程度可以分为:1.简单工厂模式 2.工厂方法模式 3.抽象工厂模式 什么时候用工厂模式 对实例的封装,使用 new 操作符时候可以考虑用工厂模式 身边的工厂模式 $(selector) $()就是一个…

js 设计模式-工厂模式

5/12/20197 分钟阅读280

理解 js 的继承:原型链继承、构造函数继承、组合继承、原型继承、寄生继承、寄生组合继承和 ES6 class extendJavaScript

原型链继承 将父类的实例作为子类的原型 优点 父类方法可以复用 缺点 父类的引用属性会被所有子类共享 子类创建实例不能向父类传递参数 构造函数继承 将父类构造函数内容复制给子类构造函数 优点 可以在 Child 中向 Parent 传参 类的引用属性不会被共享 缺点 都在构造函数中定义,每次创建实例都会初始化方法或属性 父类方法不能复用 组合继承 构造函数继承与原型链继承结合 优点 父类的方法可以…

理解 js 的继承:原型链继承、构造函数继承、组合继承、原型继承、寄生继承、寄生组合继承和 ES6 class extend

5/12/20195 分钟阅读240

理解 js 的\_\_proto\_\_ 、prototype 和 constructorJavaScript

__proto__ __proto__ 指向它对应的原型对象 prototype 只有函数才有 prototype 属性 每个函数创建后都有 prototype 属性,一旦把这个函数当作构造函数,调用 new 操作符,js 就会创建构造函数的实例 创建一个实例,是通过__proto__指向构造函数的 prototype 来实现继承构造函数 prototype 的所有属性和方法的 construct…

理解 js 的\_\_proto\_\_ 、prototype 和 constructor

5/12/20192 分钟阅读250

理解 js this 绑定的 6 种规则:默认绑定、隐式绑定(隐式丢失)、显式绑定、new 绑定、严格模式下的 this、箭头函数绑定JavaScript

默认绑定 隐式绑定(隐式丢失) 显式绑定 new 绑定 严格模式下的 this 箭头函数绑定 默认绑定 this 指向 window 例子 1:在全局环境中,this 默认绑定到 window 例子 2:函数独立调用的时候,this 默认绑定到 window 例子 3:被嵌套函数独立调用的时候,this 默认绑定到 window 例子 4:IIFE 立即执行函数实际上是函数声明后直接调用执行 相当…

理解 js this 绑定的 6 种规则:默认绑定、隐式绑定(隐式丢失)、显式绑定、new 绑定、严格模式下的 this、箭头函数绑定

4/27/20196 分钟阅读180

理解 js 的作用域,作用域链,闭包JavaScript

作用域 作用域就是执行上下文,在执行上下文中会有内存分配与执行两个阶段。变量的的生命周期:声明,初始化,赋值 变量提升 在全局作用域或者函数作用域 var 声明变量允许在声明之前使用,值为 undefined,这个就是变量提升 块级作用域中声明的变量会提升到该作用域的头部,即允许在实际声明前使用 暂时性死区 在全局作用域或者函数作用域 let 或 const 声明变量,只允许在声明之后访问,在作用…

理解 js 的作用域,作用域链,闭包

4/27/20195 分钟阅读180

理解 js 的数据类型,内存机制,变量引用,垃圾回收,内存泄漏JavaScript

js 三种数据结构 栈:栈是一种后进先出的数据结构 队列:队列是一种先进先出的数据结构 堆:堆是一种树状结构,类似于书架,只需要知道书的名字就可以直接取出书,也类似于 JSON,每一个 key 都对应一个 value 数据类型 基本数据类型:Undefined,Null,Boolean,Number,String 和 Symbol 引用数据类型:Object,Array,Function 变量的存…

理解 js 的数据类型,内存机制,变量引用,垃圾回收,内存泄漏

4/23/20195 分钟阅读180

Set、WeakSet、Map、WeakMapJavaScript

Set Set 是一个构造函数,类似于数组 Set 的成员的值都是唯一的 Set 不会发生类型转换 Set 结构没有键名,只有键值 Set 的操作 去除数组重复成员 去除字符串重复字符 Set 无法去重两个空对象 Set 的属性与方法 Set 的遍历 WeakSet WeakSet 类似 Set,也是不重复的集合,但是 WeakSet 的成员智能是对象, WeakSet 里面的引用,都不计入垃圾回…

Set、WeakSet、Map、WeakMap

4/21/20194 分钟阅读180