事件循环
Event Loop 是一种运行机制。
宏任务macrotask和微任务microtask两个概念,这表示任务的两种分类。
在挂起任务时,JS 引擎会将所有任务按照类别分到这两个队列中,首先在 macrotask 的队列(这个队列也被叫做 task queue)中取出第一个任务,执行完毕后取出 microtask 队列中的所有任务顺序执行;
之后再取 macrotask 任务,周而复始,直至两个队列的任务都取完。
Promise 表示一个异步操作的最终结果,与之进行交互的方式主要是 then 方法,该方法注册了两个回调函数,用于接收 promise 的终值或本 promise 不能执行的原因。
一个 Promise有以下几种状态:
pending: 初始状态,既不是成功,也不是失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。Promise 本质是一个状态机。每个 promise 只能是 3 种状态中的一种:pending、fulfilled 或 rejected。状态转变只能是 pending -> fulfilled 或者 pending -> rejected。状态转变不可逆。then 方法可以被同一个 promise 调用多次。then 方法必须返回一个 promise 。规范里没有明确说明返回一个新的 promise 还是复用老的 promise(即 return this),大多数实现都是返回一个新的 promise ,而且复用老的 promise 可能改变内部状态,这与规范也是相违背的。promise传递过来的值,经由这个then方法的时候不做任何处理,而是交给再下个then方法去处理)。JavaScript主要通过原型链实现继承。原型链的构建是通过将一个类型的实例赋值给另一个构造函数的原型实现的
__proto__someObject.[[Prototype]] 符号是用于指向 someObject的原型;JavaScript 的非标准但许多浏览器实现的属性 __proto__;[[Prototype]] 可以通过Object.getPrototypeOf()和Object.setPrototypeOf()访问器来访问;func 的 prototype 属性相混淆[[prototype]] 指向 func 的 prototype 属性。Object.prototype 属性表示Object的原型对象。使用inline-block与伪类
1 | <style> |
1 | <style> |