Skip to content

Commit

Permalink
v1.4.0 ane 更新笔记
Browse files Browse the repository at this point in the history
  • Loading branch information
xugaoyi committed Jul 30, 2020
1 parent b7afc89 commit 5b3d38d
Show file tree
Hide file tree
Showing 18 changed files with 221 additions and 177 deletions.
1 change: 1 addition & 0 deletions README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

## 上新推荐 🎉

* `v1.4.x`:新增了文章内容区块的 [背景底纹配置](https://xugaoyi.github.io/vuepress-theme-vdoing-doc/pages/a20ce8/#文章内容块的背景底纹),可以让你的文章看起来像笔记本的风格哟~(2020.07.30)
* `v1.2.x`:这个版本对整体的UI细节做了很多优化,比如标签栏和分类栏等 (2020.06.09)
* `v1.1.x`:从这个版本开始主题新增了两个`超好用``高颜值`的Markdown容器,快去 [体验](https://xugaoyi.github.io/vuepress-theme-vdoing-doc/pages/d0d7eb)~ (2020.05.29)

Expand Down
10 changes: 7 additions & 3 deletions docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,24 +34,28 @@ module.exports = {
// tag: false, // 是否打开标签功能,默认true。 如打开,会做的事情有:1. 自动生成的frontmatter包含标签字段 2.页面中显示与标签相关的信息和模块 3.自动生成标签页面(在@pages文件夹)。如关闭,则反之。
// archive: false, // 是否打开归档功能,默认true。 如打开,会做的事情有:1.自动生成归档页面(在@pages文件夹)。如关闭,则反之。
// categoryText: '随笔', // 碎片化文章(_posts文件夹的文章)预设生成的分类值,默认'随笔'

// bodyBgImg: [
// 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200507175828.jpeg',
// 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200507175845.jpeg',
// 'https://cdn.jsdelivr.net/gh/xugaoyi/image_store/blog/20200507175846.jpeg'
// ], // body背景大图,默认无。 单张图片 String || 多张图片 Array, 多张图片时每隔15秒换一张。
// bodyBgImgOpacity: 0.5, // body背景图透明度,选值 0 ~ 1.0, 默认0.5

// titleBadge: false, // 文章标题前的图标是否显示,默认true
// titleBadgeIcons: [ // 文章标题前图标的地址,默认主题内置图标
// '图标地址1',
// '图标地址2'
// ],
contentBgStyle: 1, // 文章内容块的背景风格,默认无. 1 => 方格 | 2 => 横线 | 3 => 竖线 | 4 => 左斜线 | 5 => 右斜线 | 6 => 点状

sidebar: 'structuring', // 侧边栏 'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | 自定义 温馨提示:目录页数据依赖于结构化的侧边栏数据,如果你不设置为'structuring',将无法使用目录页

// sidebarOpen: false, // 初始状态是否打开侧边栏,默认true
// updateBar: { // 最近更新栏
// showToArticle: true, // 显示到文章页底部,默认true
// moreArticle: '/archives' // “更多文章”跳转的页面,默认'/archives'
// },
// sidebarOpen: false, // 初始状态是否打开侧边栏,默认true

sidebar: 'structuring', // 侧边栏 'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | 自定义 温馨提示:目录页数据依赖于结构化的侧边栏数据,如果你不设置为'structuring',将无法使用目录页

author: { // 文章默认的作者信息,可在md文件中单独配置此信息 String | {name: String, link: String}
name: 'Evan Xu', // 必需
Expand Down
2 changes: 1 addition & 1 deletion docs/06.收藏夹/01.网站.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ article: false
* [CSS3-Box Shadow(阴影)](https://www.html.cn/tool/css3Preview/Box-Shadow.html)
* [贝塞尔曲线生成器 ](https://cubic-bezier.com)
* [花纹背景生成器](http://www.heropatterns.com/)
* [花纹背景css](https://github.com/bansal-io/pattern.css)
* [花纹背景-pattern.css](https://github.com/bansal-io/pattern.css)

### CDN加速
* [jsDelivr](http://www.jsdelivr.com/) 国外的一家优秀的公共 CDN 服务提供商
Expand Down
72 changes: 36 additions & 36 deletions docs/《ES6 教程》笔记/16.Promise 对象.md

Large diffs are not rendered by default.

28 changes: 14 additions & 14 deletions docs/《ES6 教程》笔记/17.Iterator 和 for-of 循环.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ tags:

JavaScript 原有的表示“集合”的数据结构,主要是数组(`Array`)和对象(`Object`),ES6 又添加了`Map``Set`。这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是`Map``Map`的成员是对象。这样就需要一种统一的接口机制,来处理所有不同的数据结构。
<!-- more -->
遍历器(Iterator)就是这样一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。
遍历器(Iterator)就是这样一种机制。**它是一种接口,为各种不同的数据结构提供统一的访问机制****任何数据结构只要部署 Iterator 接口,就可以完成遍历操作**(即依次处理该数据结构的所有成员)。

Iterator 的作用有三个:一是为各种数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员能够按某种次序排列;三是 ES6 创造了一种新的遍历命令`for...of`循环,Iterator 接口主要供`for...of`消费。

Expand Down Expand Up @@ -116,11 +116,11 @@ interface IterationResult {

## 默认 Iterator 接口

Iterator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即`for...of`循环(详见下文)。当使用`for...of`循环遍历某种数据结构时,该循环会自动去寻找 Iterator 接口。
I**terator 接口的目的,就是为所有数据结构,提供了一种统一的访问机制,即`for...of`循环(详见下文)**。当使用`for...of`循环遍历某种数据结构时,该循环会自动去寻找 Iterator 接口。

一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是“可遍历的”(iterable)。
**一种数据结构只要部署了 Iterator 接口,我们就称这种数据结构是“可遍历的”**(iterable)。

ES6 规定,默认的 Iterator 接口部署在数据结构的`Symbol.iterator`属性,或者说,一个数据结构只要具有`Symbol.iterator`属性,就可以认为是“可遍历的”(iterable)。`Symbol.iterator`属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。至于属性名`Symbol.iterator`,它是一个表达式,返回`Symbol`对象的`iterator`属性,这是一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内(参见《Symbol》一章)。
ES6 规定,**默认的 Iterator 接口部署在数据结构的`Symbol.iterator`属性**,或者说,一个数据结构只要具有`Symbol.iterator`属性,就可以认为是“可遍历的”(iterable)。`Symbol.iterator`属性本身是一个函数,就是当前数据结构默认的遍历器生成函数。执行这个函数,就会返回一个遍历器。至于属性名`Symbol.iterator`,它是一个表达式,返回`Symbol`对象的`iterator`属性,这是一个预定义好的、类型为 Symbol 的特殊值,所以要放在方括号内(参见《Symbol》一章)。

```javascript
const obj = {
Expand All @@ -141,7 +141,7 @@ const obj = {

ES6 的有些数据结构原生具备 Iterator 接口(比如数组),即不用任何处理,就可以被`for...of`循环遍历。原因在于,这些数据结构原生部署了`Symbol.iterator`属性(详见下文),另外一些数据结构没有(比如对象)。凡是部署了`Symbol.iterator`属性的数据结构,就称为部署了遍历器接口。调用这个接口,就会返回一个遍历器对象。

原生具备 Iterator 接口的数据结构如下。
**原生具备 Iterator 接口的数据结构如下。**

- Array
- Map
Expand Down Expand Up @@ -276,7 +276,7 @@ NodeList.prototype[Symbol.iterator] = [][Symbol.iterator];

NodeList 对象是类似数组的对象,本来就具有遍历接口,可以直接遍历。上面代码中,我们将它的遍历接口改成数组的`Symbol.iterator`属性,可以看到没有任何影响。

下面是另一个类似数组的对象调用数组的`Symbol.iterator`方法的例子。
下面是另一个**类似数组的对象调用数组的`Symbol.iterator`方法的例子**

```javascript
let iterable = {
Expand All @@ -291,7 +291,7 @@ for (let item of iterable) {
}
```

注意,普通对象部署数组的`Symbol.iterator`方法,并无效果。
注意,**普通对象部署数组的`Symbol.iterator`方法,并无效果**

```javascript
let iterable = {
Expand Down Expand Up @@ -367,7 +367,7 @@ let arr = ['b', 'c'];

上面代码的扩展运算符内部就调用 Iterator 接口。

实际上,这提供了一种简便机制,可以将任何部署了 Iterator 接口的数据结构,转为数组。也就是说,只要某个数据结构部署了 Iterator 接口,就可以对它使用扩展运算符,将其转为数组。
实际上,这提供了一种简便机制,可以将任何部署了 Iterator 接口的数据结构,转为数组。也就是说,**只要某个数据结构部署了 Iterator 接口,就可以对它使用扩展运算符,将其转为数组**

```javascript
let arr = [...iterable];
Expand Down Expand Up @@ -406,7 +406,7 @@ iterator.next() // { value: undefined, done: true }

## 字符串的 Iterator 接口

字符串是一个类似数组的对象,也原生具有 Iterator 接口。
**字符串是一个类似数组的对象,也原生具有 Iterator 接口**

```javascript
var someString = "hi";
Expand Down Expand Up @@ -529,11 +529,11 @@ for (let line of readLinesSync(fileName)) {

## for...of 循环

ES6 借鉴 C++、Java、C# 和 Python 语言,引入了`for...of`循环,作为遍历所有数据结构的统一的方法。
ES6 借鉴 C++、Java、C# 和 Python 语言,引入了`for...of`循环,**作为遍历所有数据结构的统一的方法**

一个数据结构只要部署了`Symbol.iterator`属性,就被视为具有 iterator 接口,就可以用`for...of`循环遍历它的成员。也就是说,`for...of`循环内部调用的是数据结构的`Symbol.iterator`方法。
一个数据结构只要部署了`Symbol.iterator`属性,就被视为具有 iterator 接口,就可以用`for...of`循环遍历它的成员。也就是说,**`for...of`循环内部调用的是数据结构的`Symbol.iterator`方法**

`for...of`循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如`arguments`对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。
`for...of`循环可以使用的范围包括**数组、Set 和 Map 结构、某些类似数组的对象(比如`arguments`对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。**

### 数组

Expand Down Expand Up @@ -567,7 +567,7 @@ arr.forEach(function (element, index) {
});
```

JavaScript 原有的`for...in`循环,只能获得对象的键名,不能直接获取键值。ES6 提供`for...of`循环,允许遍历获得键值。
JavaScript 原有的**`for...in`循环,只能获得对象的键名**,不能直接获取键值。ES6 提供`for...of`循环,允许遍历获得键值。

```javascript
var arr = ['a', 'b', 'c', 'd'];
Expand All @@ -581,7 +581,7 @@ for (let a of arr) {
}
```

上面代码表明,`for...in`循环读取键名,`for...of`循环读取键值。如果要通过`for...of`循环,获取数组的索引,可以借助数组实例的`entries`方法和`keys`方法(参见《数组的扩展》一章)。
上面代码表明,**`for...in`循环读取键名,`for...of`循环读取键值**。如果要通过`for...of`循环,获取数组的索引,可以借助数组实例的`entries`方法和`keys`方法(参见《数组的扩展》一章)。

`for...of`循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟`for...in`循环也不一样。

Expand Down
Loading

0 comments on commit 5b3d38d

Please sign in to comment.