1
0
Fork 0
Browse Source

vault backup: 2022-05-16 16:35:40

master
YuJian 3 years ago
parent
commit
0681a68208
  1. 2
      深入探索 JavaScript/JavaScript 对象.md
  2. 10
      深入探索 JavaScript/JavaScript 执行.md

2
深入探索 JavaScript/JavaScript 对象.md

@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
>固有对象在任何 JS 代码执行钱就已经被创建出来了,它们通常扮演着类似基础库的角色,“类”其实就是固有对象的一种。
固有对象构造器创建的对象多数使用了私有字段,这些字段使得原型继承方法无法正常工作,这里的无法正常工作指的是无法继承zhe'yi'xie,所以我们可以认为所有这些原生对象都是为了特定能力或者性能而设计出来的 “特权对象”。
固有对象构造器创建的对象多数使用了私有字段,这些字段使得原型继承方法无法正常工作,这里的无法正常工作指的是无法继承这一些私有字段,所以我们可以认为所有这些原生对象都是为了特定能力或者性能而设计出来的 “特权对象”。
函数对象的定义是:具有 \[\[call\]\] 私有字段的对象,该必须是一个引擎中定义的函数,需要接受 this 值和调用参数,并且会产生域的切换。
构造器对象的定义是:具有 \[\[construct\]\] 私有字段的对象。

10
深入探索 JavaScript/JavaScript 执行.md

@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
在 ES3 和更早的版本中,JavaScript 本身还没有异步执行代码的能力,在 ES5 之后,JavaScript 引入了 Promise,这样不需要浏览器的安排,引擎本身也可以发起任务了。
## 宏观和微观任务
采纳 JSC 引擎的术语,把宿主发起的任务称为**宏观任务**,将引擎发起的任务称作**微观任务**
用伪代码表示事件循环大概如下:
@ -13,4 +15,10 @@ while(true) { @@ -13,4 +15,10 @@ while(true) {
}
```
其中每次的循环过程,其实就是一个宏观任务,大致可以理解为宏观任务的队列就相当于事件循环。在宏观任务中,JavaScript 的 Promise 还会产生异步代码,JavaScript 必须保证这些异步代码在一个宏观任务中完成,因此,每个宏观任务中又包含了一个微观任务队列
其中每次的循环过程,其实就是一个宏观任务,大致可以理解为宏观任务的队列就相当于事件循环。在宏观任务中,JavaScript 的 Promise 还会产生异步代码,JavaScript 必须保证这些异步代码在一个宏观任务中完成,因此,每个宏观任务中又包含了一个微观任务队列。
有了宏观任务和微观任务机制,我们就可以实现 JavaScript 引擎级和宿主级的任务了,例如:Promise 永远在队列尾部添加微观任务。setTimeout 等宿主 API,则会添加宏观任务。
## Promise
Promise 是 JavaScript 语言提供的一种标准化的异步管理方式,它的总体思想是,需要进行 io、等待或者其它异步操作的函数,不返回真实结果,而返回一个“承诺”,函数的调用方可以在合适的时机,选择等待这个承诺兑现(通过 Promise 的 then 方法的回调)。
Loading…
Cancel
Save