diff --git a/docs/JavaScript/ajax.md b/docs/JavaScript/ajax.md
index 55fa0071..6bd67091 100644
--- a/docs/JavaScript/ajax.md
+++ b/docs/JavaScript/ajax.md
@@ -34,7 +34,7 @@
- 构建请求所需的数据内容,并通过` XMLHttpRequest` 对象的 `send()` 方法发送给服务器端
-- 通过 `XMLHttpRequest` 对象提供的 `onreadystatechange` 事件监听服务器端你的通信状态
+- 通过 `XMLHttpRequest` 对象提供的 `onreadystatechange` 事件监听服务器端的通信状态
- 接受并处理服务端向客户端响应的数据结果
@@ -68,10 +68,10 @@ xhr.open(method, url, [async][, user][, password])
- `async`:布尔值,表示是否异步执行操作,默认为`true`
-- `user`: 可选的用户名用于认证用途;默认为`null
+- `user`: 可选的用户名用于认证用途;默认为`null`
-- `password`: 可选的密码用于认证用途,默认为`null
+- `password`: 可选的密码用于认证用途,默认为`null`
diff --git a/docs/JavaScript/bind_call_apply.md b/docs/JavaScript/bind_call_apply.md
index cc36c05b..d416810a 100644
--- a/docs/JavaScript/bind_call_apply.md
+++ b/docs/JavaScript/bind_call_apply.md
@@ -117,7 +117,7 @@ fn(1,2) // this指向window
从上面可以看到,`apply`、`call`、`bind`三者的区别在于:
- 三者都可以改变函数的`this`对象指向
-- 三者第一个参数都是`this`要指向的对象,如果如果没有这个参数或参数为`undefined`或`null`,则默认指向全局`window`
+- 三者第一个参数都是`this`要指向的对象,如果没有这个参数或参数为`undefined`或`null`,则默认指向全局`window`
- 三者都可以传参,但是`apply`是数组,而`call`是参数列表,且`apply`和`call`是一次性传入参数,而`bind`可以分为多次传入
- `bind `是返回绑定this之后的函数,`apply `、`call` 则是立即执行
diff --git a/docs/JavaScript/cache.md b/docs/JavaScript/cache.md
index 43f89cec..9c131803 100644
--- a/docs/JavaScript/cache.md
+++ b/docs/JavaScript/cache.md
@@ -4,7 +4,7 @@
## 一、方式
-`javaScript`本地缓存的方法我们主要讲述以下四种:
+`JavaScript`本地缓存的方法我们主要讲述以下四种:
- cookie
- sessionStorage
@@ -43,7 +43,7 @@ Path=/docs # /docs/Web/ 下的资源会带 Cookie 首部
- 标记为 `Secure `的 `Cookie `只应通过被`HTTPS`协议加密过的请求发送给服务端
-通过上述,我们可以看到`cookie`又开始的作用并不是为了缓存而设计出来,只是借用了`cookie`的特性实现缓存
+通过上述,我们可以看到`cookie`开始的作用并不是为了缓存而设计出来,只是借用了`cookie`的特性实现缓存
关于`cookie`的使用如下:
@@ -51,7 +51,7 @@ Path=/docs # /docs/Web/ 下的资源会带 Cookie 首部
document.cookie = '名字=值';
```
-关于`cookie`的修改,首先要确定`domain`和`path`属性都是相同的才可以,其中有一个不同得时候都会创建出一个新的`cookie`
+关于`cookie`的修改,首先要确定`domain`和`path`属性都是相同的才可以,其中有一个不同的时候都会创建出一个新的`cookie`
```js
Set-Cookie:name=aa; domain=aa.net; path=/ # 服务端设置
diff --git a/docs/JavaScript/closure.md b/docs/JavaScript/closure.md
index 23cc19aa..0636fb6c 100644
--- a/docs/JavaScript/closure.md
+++ b/docs/JavaScript/closure.md
@@ -68,7 +68,7 @@ document.getElementById('size-16').onclick = size16;
function getArea(width, height) {
return width * height
}
-// 如果我们碰到的长方形的宽老是10
+// 如果我们碰到的长方形的宽高是10
const area1 = getArea(10, 20)
const area2 = getArea(10, 30)
const area3 = getArea(10, 40)
@@ -98,7 +98,7 @@ const getTwentyWidthArea = getArea(20)
下面举个例子:
```js
-var Counter = (function() {
+var makeCounter = (function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
@@ -116,8 +116,8 @@ var Counter = (function() {
}
})();
-var Counter1 = makeCounter();
-var Counter2 = makeCounter();
+var Counter1 = makeCounter;
+var Counter2 = makeCounter;
console.log(Counter1.value()); /* logs 0 */
Counter1.increment();
Counter1.increment();
diff --git a/docs/JavaScript/copy.md b/docs/JavaScript/copy.md
index 26c35841..7b03369f 100644
--- a/docs/JavaScript/copy.md
+++ b/docs/JavaScript/copy.md
@@ -61,7 +61,7 @@ var obj = {
console.log('fx is a great girl')
}
}
-var newObj = Object.assign({}, fxObj);
+var newObj = Object.assign({}, obj);
```
diff --git a/docs/JavaScript/data_type.md b/docs/JavaScript/data_type.md
index 4826a322..575c6867 100644
--- a/docs/JavaScript/data_type.md
+++ b/docs/JavaScript/data_type.md
@@ -261,7 +261,7 @@ console.log(a); // 10值
var obj1 = {}
var obj2 = obj1;
obj2.name = "Xxx";
-console.log(obj1.name); // xxx
+console.log(obj1.name); // Xxx
```
引用类型数据存放在堆中,每个堆内存对象都有对应的引用地址指向它,引用地址存放在栈中。
diff --git a/docs/JavaScript/event_Model.md b/docs/JavaScript/event_Model.md
index 97827e42..05792701 100644
--- a/docs/JavaScript/event_Model.md
+++ b/docs/JavaScript/event_Model.md
@@ -151,8 +151,8 @@ removeEventListener(eventType, handler, useCapture)
```js
var btn = document.getElementById('.btn');
-btn.addEventListener(‘click’, showMessage, false);
-btn.removeEventListener(‘click’, showMessage, false);
+btn.addEventListener('click', showMessage, false);
+btn.removeEventListener('click', showMessage, false);
```
#### 特性
@@ -160,9 +160,9 @@ btn.removeEventListener(‘click’, showMessage, false);
- 可以在一个`DOM`元素上绑定多个事件处理器,各自并不会冲突
```js
-btn.addEventListener(‘click’, showMessage1, false);
-btn.addEventListener(‘click’, showMessage2, false);
-btn.addEventListener(‘click’, showMessage3, false);
+btn.addEventListener('click', showMessage1, false);
+btn.addEventListener('click', showMessage2, false);
+btn.addEventListener('click', showMessage3, false);
```
- 执行时机
@@ -247,6 +247,6 @@ detachEvent(eventType, handler)
```js
var btn = document.getElementById('.btn');
-btn.attachEvent(‘onclick’, showMessage);
-btn.detachEvent(‘onclick’, showMessage);
+btn.attachEvent('onclick', showMessage);
+btn.detachEvent('onclick', showMessage);
```
\ No newline at end of file
diff --git a/docs/JavaScript/event_loop.md b/docs/JavaScript/event_loop.md
index 07a84f99..d2212d55 100644
--- a/docs/JavaScript/event_loop.md
+++ b/docs/JavaScript/event_loop.md
@@ -218,7 +218,7 @@ console.log('script end')
1. 执行整段代码,遇到 `console.log('script start')` 直接打印结果,输出 `script start`
2. 遇到定时器了,它是宏任务,先放着不执行
-3. 遇到 `async1()`,执行 `async1` 函数,先打印 `async1 start`,下面遇到` await `怎么办?先执行 `async2`,打印 `async2`,然后阻塞下面代码(即加入微任务列表),跳出去执行同步代码
+3. 遇到 `async1()`,执行 `async1` 函数,先打印 `async1 start`,下面遇到` await `怎么办?先执行 `async2`,打印 `async2`,然后阻塞下面代码(即加入微任务列表),跳出去执行同步代码。await 关键字在 async 函数内部确实会阻塞进一步的代码执行,但 await 后面跟随的 async 函数(即 async2())的执行是立即的,直到 async2() 函数内部的所有同步代码执行完毕并返回一个 Promise(在这个例子中是隐式的,因为 async 函数总是返回 Promise)。然后,await 会等待这个 Promise 解析(resolve)或拒绝(reject),而不是将 async2() 的执行本身放入微任务队列。
4. 跳到 `new Promise` 这里,直接执行,打印 `promise1`,下面遇到 `.then()`,它是微任务,放到微任务列表等待执行
5. 最后一行直接打印 `script end`,现在同步代码执行完了,开始执行微任务,即 `await `下面的代码,打印 `async1 end`
6. 继续执行下一个微任务,即执行 `then` 的回调,打印 `promise2`
diff --git a/docs/JavaScript/inherit.md b/docs/JavaScript/inherit.md
index 353c1848..bbc56f44 100644
--- a/docs/JavaScript/inherit.md
+++ b/docs/JavaScript/inherit.md
@@ -62,7 +62,7 @@ class Truck extends Car{
## 二、实现方式
-下面给出`JavaScripy`常见的继承方式:
+下面给出`JavaScript`常见的继承方式:
- 原型链继承
@@ -88,15 +88,15 @@ class Truck extends Car{
function Child() {
this.type = 'child2';
}
- Child1.prototype = new Parent();
+ Child.prototype = new Parent();
console.log(new Child())
```
上面代码看似没问题,实际存在潜在问题
```js
-var s1 = new Child2();
-var s2 = new Child2();
+var s1 = new Child();
+var s2 = new Child();
s1.play.push(4);
console.log(s1.play, s2.play); // [1,2,3,4]
```
@@ -119,13 +119,13 @@ Parent.prototype.getName = function () {
}
function Child(){
- Parent1.call(this);
+ Parent.call(this);
this.type = 'child'
}
let child = new Child();
console.log(child); // 没问题
-console.log(child.getName()); // 会报错
+console.log(child.getName()); // 会报错 Uncaught TypeError: child.getName is not a function
```
可以看到,父类原型对象中一旦存在父类之前自己定义的方法,那么子类将无法继承这些方法
@@ -136,7 +136,7 @@ console.log(child.getName()); // 会报错
### 组合继承
-前面我们讲到两种继承方式,各有优缺点。组合继承则将前两种方式继承起来
+前面我们讲到两种继承方式,各有优缺点。组合继承则将前两种方式结合起来
```js
function Parent3 () {
diff --git a/docs/JavaScript/loss_accuracy.md b/docs/JavaScript/loss_accuracy.md
index 25d4b8ac..cca6e7b1 100644
--- a/docs/JavaScript/loss_accuracy.md
+++ b/docs/JavaScript/loss_accuracy.md
@@ -41,7 +41,7 @@

-前面讲到,`javaScript`存储方式是双精度浮点数,其长度为8个字节,即64位比特
+前面讲到,`JavaScript`存储方式是双精度浮点数,其长度为8个字节,即64位比特
64位比特又可分为三个部分:
diff --git a/docs/JavaScript/memory_leak.md b/docs/JavaScript/memory_leak.md
index 7ddce37b..1693bdc6 100644
--- a/docs/JavaScript/memory_leak.md
+++ b/docs/JavaScript/memory_leak.md
@@ -47,7 +47,7 @@ Javascript 具有自动垃圾回收机制(GC:Garbage Collecation),也就
`JavaScript`最常用的垃圾收回机制
-当变量进入执行环境是,就标记这个变量为“进入环境“。进入环境的变量所占用的内存就不能释放,当变量离开环境时,则将其标记为“离开环境“
+当变量进入执行环境时,就标记这个变量为“进入环境“。进入环境的变量所占用的内存就不能释放,当变量离开环境时,则将其标记为“离开环境“
垃圾回收程序运行的时候,会标记内存中存储的所有变量。然后,它会将所有在上下文中的变量,以及被在上下文中的变量引用的变量的标记去掉
diff --git a/docs/JavaScript/security.md b/docs/JavaScript/security.md
index 4526d4e0..584710b2 100644
--- a/docs/JavaScript/security.md
+++ b/docs/JavaScript/security.md
@@ -167,7 +167,7 @@ eval("UNTRUSTED")
CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求
-利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目
+利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的
一个典型的CSRF攻击有着如下的流程:
diff --git a/docs/JavaScript/string_api.md b/docs/JavaScript/string_api.md
index 0f06fb08..f3985107 100644
--- a/docs/JavaScript/string_api.md
+++ b/docs/JavaScript/string_api.md
@@ -217,6 +217,10 @@ console.log(pos); // 1
接收两个参数,第一个参数为匹配的内容,第二个参数为替换的元素(可用函数)
+其中一个、多个或所有匹配的 pattern 被替换为 replacement。pattern 可以是字符串或 RegExp,replacement 可以是字符串或一个在每次匹配时调用的函数。
+
+如果 pattern 是字符串,则只会替换第一个匹配项。原始的字符串不会改变。
+
```js
let text = "cat, bat, sat, fat";
let result = text.replace("at", "ond");
diff --git a/docs/JavaScript/this.md b/docs/JavaScript/this.md
index faa670b1..f57aafc6 100644
--- a/docs/JavaScript/this.md
+++ b/docs/JavaScript/this.md
@@ -85,7 +85,7 @@ function person() {
console.log(person()); //Jenny
```
-上述代码输出`Jenny`,原因是调用函数的对象在游览器中位`window`,因此`this`指向`window`,所以输出`Jenny`
+上述代码输出`Jenny`,原因是调用函数的对象在浏览器中为`window`,因此`this`指向`window`,所以输出`Jenny`
注意:
@@ -159,7 +159,7 @@ var obj = new test();
obj.x // 1
```
-上述代码之所以能过输出1,是因为`new`关键字改变了`this`的指向
+上述代码之所以能够输出1,是因为`new`关键字改变了`this`的指向
这里再列举一些特殊情况:
@@ -222,7 +222,7 @@ obj.m.apply(obj) // 1
## 三、箭头函数
-在 ES6 的语法中还提供了箭头函语法,让我们在代码书写时就能确定 `this` 的指向(编译时绑定)
+在 ES6 的语法中还提供了箭头函数语法,让我们在代码书写时就能确定 `this` 的指向(编译时绑定)
举个例子:
diff --git a/docs/JavaScript/visible.md b/docs/JavaScript/visible.md
index 28a4f02a..69473777 100644
--- a/docs/JavaScript/visible.md
+++ b/docs/JavaScript/visible.md
@@ -163,7 +163,7 @@ const callback = function(entries, observer) {
entries.forEach(entry => {
entry.time; // 触发的时间
entry.rootBounds; // 根元素的位置矩形,这种情况下为视窗位置
- entry.boundingClientRect; // 被观察者的位置举行
+ entry.boundingClientRect; // 被观察者的位置矩形
entry.intersectionRect; // 重叠区域的位置矩形
entry.intersectionRatio; // 重叠区域占被观察者面积的比例(被观察者不是矩形时也按照矩形计算)
entry.target; // 被观察者
diff --git a/docs/React/Binding events.md b/docs/React/Binding events.md
index a3ad2577..616f6f0c 100644
--- a/docs/React/Binding events.md
+++ b/docs/React/Binding events.md
@@ -39,7 +39,7 @@ class ShowAlert extends React.Component {
### render方法中使用bind
-如果使用一个类组件,在其中给某个组件/元素一个`onClick`属性,它现在并会自定绑定其`this`到当前组件,解决这个问题的方法是在事件函数后使用`.bind(this)`将`this`绑定到当前组件中
+如果使用一个类组件,在其中给某个组件/元素一个`onClick`属性,它现在会自动绑定其`this`到当前组件,解决这个问题的方法是在事件函数后使用`.bind(this)`将`this`绑定到当前组件中
```jsx
class App extends React.Component {
diff --git a/docs/React/Building components.md b/docs/React/Building components.md
index e8791370..154985b4 100644
--- a/docs/React/Building components.md
+++ b/docs/React/Building components.md
@@ -73,7 +73,7 @@ function HelloComponent(props) /* context */{
有状态的组件也就是组件内部存在维护的数据,在类创建的方式中通过`this.state`进行访问
-当调用`this.setState`修改组件的状态时,组价会再次会调用`render()`方法进行重新渲染
+当调用`this.setState`修改组件的状态时,组件会再次会调用`render()`方法进行重新渲染
通过继承`React.Component`创建一个时钟示例如下:
diff --git a/docs/React/Fiber.md b/docs/React/Fiber.md
index f98e2c96..6c672afd 100644
--- a/docs/React/Fiber.md
+++ b/docs/React/Fiber.md
@@ -7,7 +7,7 @@
`JavaScript `引擎和页面渲染引擎两个线程是互斥的,当其中一个线程执行时,另一个线程只能挂起等待
-如果 `JavaScript` 线程长时间地占用了主线程,那么渲染层面的更新就不得不长时间地等待,界面长时间不更新,会导致页面响应度变差,用户可能会感觉到卡顿
+如果 `JavaScript` 线程长时间地占用了主线程,那么渲染层面的更新就不得不长时间地等待,界面长时间不更新,会导致页面响应速度变差,用户可能会感觉到卡顿
而这也正是 `React 15` 的 `Stack Reconciler `所面临的问题,当 `React `在渲染组件时,从开始到渲染完成整个过程是一气呵成的,无法中断
@@ -21,11 +21,11 @@
## 二、是什么
-React Fiber 是 Facebook 花费两年余时间对 React 做出的一个重大改变与优化,是对 React 核心算法的一次重新实现。从Facebook在 React Conf 2017 会议上确认,React Fiber 在React 16 版本发布
+React Fiber 是 Facebook 花费两年多的时间对 React 做出的一个重大改变与优化,是对 React 核心算法的一次重新实现。从Facebook在 React Conf 2017 会议上确认,React Fiber 在React 16 版本发布
在`react`中,主要做了以下的操作:
-- 为每个增加了优先级,优先级高的任务可以中断低优先级的任务。然后再重新,注意是重新执行优先级低的任务
+- 为每个任务增加了优先级,优先级高的任务可以中断低优先级的任务。然后再重新执行,注意是重新执行优先级低的任务
- 增加了异步任务,调用requestIdleCallback api,浏览器空闲的时候执行
- dom diff树变成了链表,一个dom对应两个fiber(一个链表),对应两个队列,这都是为找到被中断的任务,重新执行
diff --git a/docs/React/High order components.md b/docs/React/High order components.md
index e160a43a..86ed25b6 100644
--- a/docs/React/High order components.md
+++ b/docs/React/High order components.md
@@ -57,7 +57,7 @@ export default (WrappedComponent) => {
这里需要注意的是,高阶组件可以传递所有的`props`,但是不能传递`ref`
-如果向一个高阶组件添加`refe`引用,那么`ref` 指向的是最外层容器组件实例的,而不是被包裹的组件,如果需要传递`refs`的话,则使用`React.forwardRef`,如下:
+如果向一个高阶组件添加`ref`引用,那么`ref` 指向的是最外层容器组件实例的,而不是被包裹的组件,如果需要传递`refs`的话,则使用`React.forwardRef`,如下:
```jsx
function withLogging(WrappedComponent) {
diff --git a/docs/React/React Router model.md b/docs/React/React Router model.md
index bc5e9772..74167f65 100644
--- a/docs/React/React Router model.md
+++ b/docs/React/React Router model.md
@@ -76,7 +76,7 @@ export default App;
## HashRouter
-`HashRouter`包裹了整应用,
+`HashRouter`包裹了整个应用,
通过`window.addEventListener('hashChange',callback)`监听`hash`值的变化,并传递给其嵌套的组件
diff --git a/docs/React/React Router.md b/docs/React/React Router.md
index 5078f63e..2b1c0d06 100644
--- a/docs/React/React Router.md
+++ b/docs/React/React Router.md
@@ -112,7 +112,7 @@ export default function App() {
### Link、NavLink
-通常路径的跳转是使用`Link`组件,最终会被渲染成`a`元素,其中属性`to`代替`a`标题的`href`属性
+通常路径的跳转是使用`Link`组件,最终会被渲染成`a`元素,其中属性`to`代替`a`标签的`href`属性
`NavLink`是在`Link`基础之上增加了一些样式属性,例如组件被选中时,发生样式变化,则可以设置`NavLink`的一下属性:
diff --git a/docs/React/React refs.md b/docs/React/React refs.md
index a9663e2d..91ac616a 100644
--- a/docs/React/React refs.md
+++ b/docs/React/React refs.md
@@ -16,7 +16,7 @@
- 传入字符串,使用时通过 this.refs.传入的字符串的格式获取对应的元素
- 传入对象,对象是通过 React.createRef() 方式创建出来,使用时获取到创建的对象中存在 current 属性就是对应的元素
-- 传入函数,该函数会在 DOM 被挂载时进行回调,这个函数会传入一个 元素对象,可以自己保存,使用时,直接拿到之前保存的元素对象即可
+- 传入函数,该函数会在 DOM 被挂载时进行回调,这个函数会传入一个元素对象,可以自己保存,使用时,直接拿到之前保存的元素对象即可
- 传入hook,hook是通过 useRef() 方式创建,使用时通过生成hook对象的 current 属性就是对应的元素
diff --git a/docs/React/React.md b/docs/React/React.md
index 53b05290..517ac04e 100644
--- a/docs/React/React.md
+++ b/docs/React/React.md
@@ -10,7 +10,7 @@ React,用于构建用户界面的 JavaScript 库,只提供了 UI 层面的
使用虚拟 `DOM` 来有效地操作 `DOM`,遵循从高阶组件到低阶组件的单向数据流
-帮助我们将界面成了各个独立的小块,每一个块就是组件,这些组件之间可以组合、嵌套,构成整体页面
+帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合、嵌套,构成整体页面
`react` 类组件使用一个名为 `render()` 的方法或者函数组件`return`,接收输入的数据并返回需要展示的内容
diff --git a/docs/React/Real DOM_Virtual DOM.md b/docs/React/Real DOM_Virtual DOM.md
index bdd4308f..6e9cdcb9 100644
--- a/docs/React/Real DOM_Virtual DOM.md
+++ b/docs/React/Real DOM_Virtual DOM.md
@@ -79,7 +79,7 @@ const vDom = React.createElement(
- 简单方便:如果使用手动操作真实 `DOM` 来完成页面,繁琐又容易出错,在大规模应用下维护起来也很困难
-- 性能方面:使用 Virtual DOM,能够有效避免真实 DOM 数频繁更新,减少多次引起重绘与回流,提高性能
+- 性能方面:使用 Virtual DOM,能够有效避免真实 DOM 频繁更新,减少多次引起重绘与回流,提高性能
- 跨平台:React 借助虚拟 DOM,带来了跨平台的能力,一套代码多端运行
缺点:
diff --git a/docs/React/Redux Middleware.md b/docs/React/Redux Middleware.md
index 6544bea3..655b9e7a 100644
--- a/docs/React/Redux Middleware.md
+++ b/docs/React/Redux Middleware.md
@@ -12,7 +12,7 @@
那么如果需要支持异步操作,或者支持错误处理、日志监控,这个过程就可以用上中间件
-`Redux`中,中间件就是放在就是在`dispatch`过程,在分发`action`进行拦截处理,如下图:
+`Redux`中,中间件就是放在`dispatch`过程,在分发`action`进行拦截处理,如下图:

diff --git a/docs/React/class_function component.md b/docs/React/class_function component.md
index 2f28d105..5a211582 100644
--- a/docs/React/class_function component.md
+++ b/docs/React/class_function component.md
@@ -210,7 +210,7 @@ class ProfilePage extends React.Component {
}
```
-两者看起来实现功能是一致的,但是在类组件中,输出`this.props.user`,`Props `在 `React `中是不可变的所以它永远不会改变,但是 `this` 总是可变的,以便您可以在 `render` 和生命周期函数中读取新版本
+两者看起来实现功能是一致的,但是在类组件中,输出`this.props.user`,`Props `在 `React `中是不可变的,所以它永远不会改变,但是 `this` 总是可变的,以便您可以在 `render` 和生命周期函数中读取新版本
因此,如果我们的组件在请求运行时更新。`this.props` 将会改变。`showMessage `方法从“最新”的 `props` 中读取 `user`
diff --git a/docs/React/communication.md b/docs/React/communication.md
index 36fe7ee4..3440b884 100644
--- a/docs/React/communication.md
+++ b/docs/React/communication.md
@@ -156,7 +156,7 @@ class Parent extends React.Component {
```
-如果想要获取`Provider`传递的数据,可以通过`Consumer`组件或者或者使用`contextType`属性接收,对应分别如下:
+如果想要获取`Provider`传递的数据,可以通过`Consumer`组件或者使用`contextType`属性接收,对应分别如下:
```jsx
class MyClass extends React.Component {
diff --git a/docs/React/how to use redux.md b/docs/React/how to use redux.md
index ecf4dd01..288e8f82 100644
--- a/docs/React/how to use redux.md
+++ b/docs/React/how to use redux.md
@@ -45,7 +45,7 @@
`connect`方法将`store`上的`getState `和 `dispatch `包装成组件的`props`
-导入`conect`如下:
+导入`connect`如下:
```js
import { connect } from "react-redux";
diff --git a/docs/React/import css.md b/docs/React/import css.md
index 3a86a0b1..5cfe6104 100644
--- a/docs/React/import css.md
+++ b/docs/React/import css.md
@@ -68,7 +68,9 @@ export default Test;
上面可以看到,`css`属性需要转换成驼峰写法
-这种方式优点:
+这种方式
+
+优点:
- 内联样式, 样式之间不会有冲突
- 可以动态获取当前state中的状态
@@ -133,7 +135,7 @@ export default class App extends PureComponent {
将`css`文件作为一个模块引入,这个模块中的所有`css`,只作用于当前组件。不会影响当前组件的后代组件
-这种方式是`webpack`特工的方案,只需要配置`webpack`配置文件中`modules:true`即可
+这种方式是`webpack`特有的方案,只需要配置`webpack`配置文件中`modules:true`即可
```jsx
import React, { PureComponent } from 'react';
@@ -235,8 +237,8 @@ export default Test;
通过上面四种样式的引入,可以看到:
-- 在组件内直接使用`css`该方式编写方便,容易能够根据状态修改样式属性,但是大量的演示编写容易导致代码混乱
-- 组件中引入 .css 文件符合我们日常的编写习惯,但是作用域是全局的,样式之间会层叠
+- 在组件内直接使用`css`该方式编写方便,容易能够根据状态修改样式属性,但是大量的样式编写容易导致代码混乱
+- 组件中引入 .css 文件符合我们日常的编写习惯,但是作用域是全局的,样式之间会重叠
- 引入.module.css 文件能够解决局部作用域问题,但是不方便动态修改样式,需要使用内联的方式进行样式的编写
- 通过css in js 这种方法,可以满足大部分场景的应用,可以类似于预处理器一样样式嵌套、定义、修改状态等
diff --git a/docs/React/life cycle.md b/docs/React/life cycle.md
index bad7f9c3..8a32efb3 100644
--- a/docs/React/life cycle.md
+++ b/docs/React/life cycle.md
@@ -131,7 +131,7 @@ componentDidUpdate(prevProps, prevState, snapshot) {
## componentWillUnmount
-此方法用于组件卸载前,清理一些注册是监听事件,或者取消订阅的网络请求等
+此方法用于组件卸载前,清理一些注册时的监听事件,或者取消订阅的网络请求等
一旦一个组件实例被卸载,其不会被再次挂载,而只可能是被重新创建
diff --git a/docs/React/redux.md b/docs/React/redux.md
index 6cba6e9a..fb1a1c77 100644
--- a/docs/React/redux.md
+++ b/docs/React/redux.md
@@ -35,7 +35,7 @@
整个流程就是借书的用户需要先存在,然后需要借书,需要一句话来描述借什么书,图书馆管理员听到后需要查一下记录本,了解图书的位置,最后图书馆管理员会把这本书给到这个借书人
-转换为代码是,`React Components` 需要获取一些数据, 然后它就告知 `Store` 需要获取数据,这就是就是 `Action Creactor` , `Store` 接收到之后去 `Reducer` 查一下, `Reducer` 会告诉 `Store` 应该给这个组件什么数据
+转换为代码是,`React Components` 需要获取一些数据, 然后它就告知 `Store` 需要获取数据,这就是 `Action Creactor` , `Store` 接收到之后去 `Reducer` 查一下, `Reducer` 会告诉 `Store` 应该给这个组件什么数据
@@ -173,7 +173,7 @@ store.dispatch({
- createStore可以帮助创建 store
- store.dispatch 帮助派发 action , action 会传递给 store
- store.getState 这个方法可以帮助获取 store 里边所有的数据内容
-- store.subscrible 方法订阅 store 的改变,只要 store 发生改变, store.subscrible 这个函数接收的这个回调函数就会被执行
+- store.subscribe 方法订阅 store 的改变,只要 store 发生改变, store.subscribe 这个函数接收的这个回调函数就会被执行
## 参考文献
diff --git a/docs/React/state_props.md b/docs/React/state_props.md
index d7c0438f..3eadb21c 100644
--- a/docs/React/state_props.md
+++ b/docs/React/state_props.md
@@ -66,7 +66,7 @@ const element =
diff --git a/docs/vue/filter.md b/docs/vue/filter.md
index 6f9311e5..514a9848 100644
--- a/docs/vue/filter.md
+++ b/docs/vue/filter.md
@@ -93,7 +93,7 @@ new Vue({
### 小结:
-- 部过滤器优先于全局过滤器被调用
+- 局部过滤器优先于全局过滤器被调用
- 一个表达式可以使用多个过滤器。过滤器之间需要用管道符“|”隔开。其执行顺序从左往右
@@ -108,7 +108,7 @@ new Vue({
Vue.filter('toThousandFilter', function (value) {
if (!value) return ''
value = value.toString()
- return .replace(str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g, '$1,')
+ return value.replace(str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g, '$1,')
})
```
diff --git a/docs/vue/first_page_time.md b/docs/vue/first_page_time.md
index 2ccefba9..e53358a0 100644
--- a/docs/vue/first_page_time.md
+++ b/docs/vue/first_page_time.md
@@ -49,7 +49,7 @@ performance.getEntriesByName("first-contentful-paint")[0].startTime
常见的几种SPA首屏优化方式
-- 减小入口文件积
+- 减小入口文件体积
- 静态资源本地缓存
- UI框架按需加载
- 图片资源的压缩
@@ -140,7 +140,7 @@ minChunks: 3
拆完包之后,我们再用`gzip`做一下压缩 安装`compression-webpack-plugin`
```js
-cnmp i compression-webpack-plugin -D
+cnpm i compression-webpack-plugin -D
```
在`vue.congig.js`中引入并修改`webpack`配置
diff --git a/docs/vue/keepalive.md b/docs/vue/keepalive.md
index 7f918a6d..954d56d9 100644
--- a/docs/vue/keepalive.md
+++ b/docs/vue/keepalive.md
@@ -23,7 +23,7 @@
```
-使用`includes`和`exclude`:
+使用`include`和`exclude`:
```go