From a28ca992111001f079fcf1c90b52683dc765e373 Mon Sep 17 00:00:00 2001 From: lycheeEng Date: Sat, 1 Jun 2019 10:44:59 +0800 Subject: [PATCH 1/3] Fix missing image in 1-js/07-object-oriented-programming/10-class-inheritance/animal-rabbit-extends.png --- .../animal-rabbit-extends.png | Bin 0 -> 31093 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 1-js/07-object-oriented-programming/10-class-inheritance/animal-rabbit-extends.png diff --git a/1-js/07-object-oriented-programming/10-class-inheritance/animal-rabbit-extends.png b/1-js/07-object-oriented-programming/10-class-inheritance/animal-rabbit-extends.png new file mode 100644 index 0000000000000000000000000000000000000000..2db88f3663c818c4ac8c5f269b40f5c72060bef6 GIT binary patch literal 31093 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 Date: Sat, 1 Jun 2019 12:09:16 +0800 Subject: [PATCH 2/3] Fix typo --- 1-js/01-getting-started/1-intro/article.md | 2 +- 1-js/03-code-quality/02-coding-style/article.md | 2 +- 1-js/04-object-basics/01-object/article.md | 2 +- 1-js/05-data-types/07-map-set-weakmap-weakset/article.md | 4 ++-- 1-js/05-data-types/08-keys-values-entries/article.md | 2 +- 2-ui/1-document/02-dom-nodes/article.md | 2 +- 2-ui/1-document/04-searching-elements-dom/article.md | 2 +- 2-ui/1-document/07-modifying-document/article.md | 2 +- 2-ui/1-document/09-size-and-scroll/article.md | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/1-js/01-getting-started/1-intro/article.md b/1-js/01-getting-started/1-intro/article.md index 4920407468..ec822e83a9 100644 --- a/1-js/01-getting-started/1-intro/article.md +++ b/1-js/01-getting-started/1-intro/article.md @@ -54,7 +54,7 @@ JavaScript 的能力依赖于它执行的环境。例如:[Node.js](https://wik - 在网页中插入新的 HTML,修改现有的网页内容和网页的样式。 - 响应用户的行为,响应鼠标的点击或移动、键盘的敲击。 - 向远程服务器发送请求,使用 [AJAX](https://en.wikipedia.org/wiki/Ajax_(programming)) 和 [COMET](https://en.wikipedia.org/wiki/Comet_(programming)) 技术下载或上传文件。 -- 获取或修改 cookie,向用访问者提出问题、发送消息。 +- 获取或修改 cookie,向访问者提出问题、发送消息。 - 记住客户端的数据(本地存储)。 ## 浏览器中的 JavaScript 不能做什么? diff --git a/1-js/03-code-quality/02-coding-style/article.md b/1-js/03-code-quality/02-coding-style/article.md index 2270d71217..47cd5b680b 100644 --- a/1-js/03-code-quality/02-coding-style/article.md +++ b/1-js/03-code-quality/02-coding-style/article.md @@ -283,7 +283,7 @@ function pow(x, n) { 最出名的工具有: - [JSLint](http://www.jslint.com/) -- 第一批 linters 之一。 -- [JSHint](http://www.jshint.com/) -- 比 JSHint 多了更多设置。 +- [JSHint](http://www.jshint.com/) -- 比 JSLint 多了更多设置。 - [ESLint](http://eslint.org/) -- 可能是最新的一个。 它们都能够做这些工作。笔者使用 [ESLint](http://eslint.org/). diff --git a/1-js/04-object-basics/01-object/article.md b/1-js/04-object-basics/01-object/article.md index 8d6215dcf1..7153f2b71c 100644 --- a/1-js/04-object-basics/01-object/article.md +++ b/1-js/04-object-basics/01-object/article.md @@ -1,7 +1,7 @@ # 对象 -正如我们从《引言:类型》那章中知道的那样,JavaScript 中有很七种类型。有六种原始类型,因为他们的值只包含一种东西(字符串,数值或者其他)。 +正如我们从《引言:类型》那章中知道的那样,JavaScript 中有七种数据类型。有六种原始类型,因为他们的值只包含一种东西(字符串,数值或者其他)。 相反,对象用来存储键值对和更复杂的实体。在 JavaScript 中,对象深入到这门语言的方方面面。所以在我们深入理解这门语言之前,必须先理解对象。 对象可以通过花括号 `{…}` 和其中包含一些可选的**属性**来创建。属性是一个键值对,键是一个字符串(也叫做属性名),值可以是任何类型。 diff --git a/1-js/05-data-types/07-map-set-weakmap-weakset/article.md b/1-js/05-data-types/07-map-set-weakmap-weakset/article.md index 45163ce6f3..00c3a3722a 100644 --- a/1-js/05-data-types/07-map-set-weakmap-weakset/article.md +++ b/1-js/05-data-types/07-map-set-weakmap-weakset/article.md @@ -31,7 +31,7 @@ map.set('1', 'str1'); // 字符串作为 key map.set(1, 'num1'); // 数字作为 key map.set(true, 'bool1'); // 布尔值作为 key -// 还记得普通对象 Object 吗?它将会吧所有的键转化为字符串类型 +// 还记得普通对象 Object 吗?它将会把所有的键转化为字符串类型 // 但是 Map 将会保留键的类型,所以下面这两个是不同的: alert( map.get(1) ); // 'num1' alert( map.get('1') ); // 'str1' @@ -395,7 +395,7 @@ let unreadSet = new WeakSet(messages); // 我们可以使用 unreadSet 来看一个 message 是否未读 alert(unreadSet.has(messages[1])); // true -// 读过之后就讲它从 set 中移除 +// 读过之后就将它从 set 中移除 unreadSet.delete(messages[1]); // true // 当我们对消息列表做 shift 操作,set 就会自动清理 diff --git a/1-js/05-data-types/08-keys-values-entries/article.md b/1-js/05-data-types/08-keys-values-entries/article.md index beaed243b3..3ba7685ac0 100644 --- a/1-js/05-data-types/08-keys-values-entries/article.md +++ b/1-js/05-data-types/08-keys-values-entries/article.md @@ -3,7 +3,7 @@ 单个数据结构告一段落,下面我们让讨论如何迭代它们。 -在前面的章节中,我们认识了 `map.keys()`,`map.value()`,`map.entries()`。 +在前面的章节中,我们认识了 `map.keys()`,`map.values()`,`map.entries()`。 这些方法是通用的,有一个共同的约定来将它们用于各种数据结构。如果我们创建一个我们自己的数据结构,我们也应该实现这些方法。 diff --git a/2-ui/1-document/02-dom-nodes/article.md b/2-ui/1-document/02-dom-nodes/article.md index 99097124d0..733391d507 100644 --- a/2-ui/1-document/02-dom-nodes/article.md +++ b/2-ui/1-document/02-dom-nodes/article.md @@ -184,7 +184,7 @@ drawHtmlTree(node6, 'div.domtree', 690, 500); 表示整个文档的 `document` 对象在形式上也是一个 DOM 节点。 -有 [12 中节点类型](https://dom.spec.whatwg.org/#node)。实际上,我们通常用到的是其中的 4 个: +有 [12 种节点类型](https://dom.spec.whatwg.org/#node)。实际上,我们通常用到的是其中的 4 个: 1. `document`—— DOM 中的“入口点”。 2. 元素节点 —— HTML 标签,树构建块。 diff --git a/2-ui/1-document/04-searching-elements-dom/article.md b/2-ui/1-document/04-searching-elements-dom/article.md index 4f5f42f595..c5e52bbe2e 100644 --- a/2-ui/1-document/04-searching-elements-dom/article.md +++ b/2-ui/1-document/04-searching-elements-dom/article.md @@ -365,7 +365,7 @@ CSS 选择器的伪类,如 `:hover` 和 `:active` 都是被支持的。例如 -请注意,只有在文档 `document.getElementById(...)` 的上下文中才能调用 `getElementById` 和 `getElementsByName`。但元素中没有 `elem.getElementById(...)` 回报错。 +请注意,只有在文档 `document.getElementById(...)` 的上下文中才能调用 `getElementById` 和 `getElementsByName`。但元素中没有 `elem.getElementById(...)` 会报错。 也可以在元素上调用其他方法,例如 `elem.querySelectorAll(...)` 将会在 `elem`(在 DOM 子树中)内部进行搜素。 diff --git a/2-ui/1-document/07-modifying-document/article.md b/2-ui/1-document/07-modifying-document/article.md index 7ddb26cf11..86248d20e8 100644 --- a/2-ui/1-document/07-modifying-document/article.md +++ b/2-ui/1-document/07-modifying-document/article.md @@ -4,7 +4,7 @@ DOM(document object model 文档对象模型,此文中全部以缩写 DOM 以下的例子向我们展示如何创建一个“弹幕”新元素并且修改它在页面中展示的内容。 -这里我们先展示出一个建单的例子,随后会逐一向你说明。 +这里我们先展示出一个简单的例子,随后会逐一向你说明。 ## 例子:展示一条信息 diff --git a/2-ui/1-document/09-size-and-scroll/article.md b/2-ui/1-document/09-size-and-scroll/article.md index c406b0c5da..79683bbbba 100644 --- a/2-ui/1-document/09-size-and-scroll/article.md +++ b/2-ui/1-document/09-size-and-scroll/article.md @@ -62,7 +62,7 @@ JavaScript 中存在许多属性让我们能够读取元素的宽度、高度或 1. CSS 定位(`position` 为 `absolute`、`relative` 或 `fixed`), 2. 或者 ``、``、``, -2. 或者 ``。 +3. 或者 ``。 在大多数实际情况下,我们可以使用 `offsetParent` 来获得最近的 CSS 定位祖先。`offsetLeft/offsetTop` 提供相对于元素左上角的 x/y 坐标。 From 701bca461cc4ed720d9f6598f77ad890c8dc9dcd Mon Sep 17 00:00:00 2001 From: lycheeEng Date: Sat, 1 Jun 2019 12:10:23 +0800 Subject: [PATCH 3/3] Improve translation --- 1-js/02-first-steps/16-javascript-specials/article.md | 2 +- 1-js/03-code-quality/03-comments/article.md | 2 +- 1-js/04-object-basics/05-object-toprimitive/article.md | 2 +- 1-js/05-data-types/02-number/article.md | 2 +- 1-js/05-data-types/03-string/article.md | 2 +- 1-js/05-data-types/04-array/article.md | 2 +- 1-js/05-data-types/05-array-methods/article.md | 2 +- 1-js/06-advanced-functions/01-recursion/article.md | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/1-js/02-first-steps/16-javascript-specials/article.md b/1-js/02-first-steps/16-javascript-specials/article.md index b163a40106..f8c6018e85 100644 --- a/1-js/02-first-steps/16-javascript-specials/article.md +++ b/1-js/02-first-steps/16-javascript-specials/article.md @@ -75,7 +75,7 @@ for(;;) { - 非拉丁字母和象形文字也是允许的,但通常不会使用。 -变量的值可以动态改变数据类型,它们可以存储任何价: +变量的值可以动态改变数据类型,它们可以存储任何值: ```js let x = 5; diff --git a/1-js/03-code-quality/03-comments/article.md b/1-js/03-code-quality/03-comments/article.md index b85b00710c..c83bac1011 100644 --- a/1-js/03-code-quality/03-comments/article.md +++ b/1-js/03-code-quality/03-comments/article.md @@ -18,7 +18,7 @@ complex; code; ``` -但在良好的代码中,这种“解释性”评论的数量应该是最小的。严肃的说,就算没有它们,代码也应该很容易理解。 +但在良好的代码中,这种“解释性”注释的数量应该是最小的。严肃的说,就算没有它们,代码也应该很容易理解。 关于这一点有一个很棒的原则:“如果代码不够清晰以至于需要一个注释,那么或许它应该被重写。” diff --git a/1-js/04-object-basics/05-object-toprimitive/article.md b/1-js/04-object-basics/05-object-toprimitive/article.md index 00f5d23c9f..81b2d76bc0 100644 --- a/1-js/04-object-basics/05-object-toprimitive/article.md +++ b/1-js/04-object-basics/05-object-toprimitive/article.md @@ -5,7 +5,7 @@ 在对象中有特殊的方法用来做转换。 -在 一章中,我们已经看到了数值,字符串和布尔转换的规则。但是我们给对象留了一个空隙。正如我们所知道的方法和符号一样,现在我们可以关闭它。 +在 一章中,我们已经看到了数值,字符串和布尔转换的规则。但是我们给对象的原始值转换留下了一点疑问。正如我们所知道的方法和符号一样,现在我们可以解决这个问题了。 对于对象,不存在 to-boolean 转换,因为所有对象在布尔上下文中都是 `true`。所以只有字符串和数值转换。 diff --git a/1-js/05-data-types/02-number/article.md b/1-js/05-data-types/02-number/article.md index ca5438fdda..9c7d1a830b 100644 --- a/1-js/05-data-types/02-number/article.md +++ b/1-js/05-data-types/02-number/article.md @@ -207,7 +207,7 @@ alert( 0.1 + 0.2 ); // 0.30000000000000004 一个数字以二进制形式存储在内存中,一个 1 和 0 的序列。但是像十进制数字系统看起来很简单的 `0.1`,`0.2` 这样的分数实际上是二进制形式的无限分数。 -换句话说,什么是 `0.1`?十分之一除以十分之一,即十分之一。在十进制数字系统中,这些数字很容易表示。将它比作三分之一:`1/3`。它变成了无尽的分数 `0.33333(3)`。 +换句话说,什么是 `0.1`?`0.1` 就是把 1 除以 10 `1/10`,即十分之一。在十进制数字系统中,这些数字很容易表示。将它比作三分之一:`1/3`。它变成了无尽的分数 `0.33333(3)`。 所以,按这种用 `10` 划分可以保证在十进制系统中运行良好,但用 `3` 划分不是。出于同样的原因,在二进制数字系统中,`2` 的幂的分割保证工作,但 `1/10` 变成一个无限的二进制分数。 diff --git a/1-js/05-data-types/03-string/article.md b/1-js/05-data-types/03-string/article.md index 0e709b7e27..1f104edb6b 100644 --- a/1-js/05-data-types/03-string/article.md +++ b/1-js/05-data-types/03-string/article.md @@ -526,7 +526,7 @@ alert( str ); ### 正确的比较 -执行字符串比较的“正确”算法比看起来更复杂,因为不同语言的字母都不想同。相同的字母可能位于不同的字母表中。 +执行字符串比较的“正确”算法比看起来更复杂,因为不同语言的字母都不相同。相同的字母可能位于不同的字母表中。 因此浏览器需要知道要比较的语言。 diff --git a/1-js/05-data-types/04-array/article.md b/1-js/05-data-types/04-array/article.md index 2dc5361f99..3336a3b3bb 100644 --- a/1-js/05-data-types/04-array/article.md +++ b/1-js/05-data-types/04-array/article.md @@ -206,7 +206,7 @@ alert( arr === fruits ); // true arr.push("Pear"); // 通过引用修改数组 -alert( fruits ); // Banana, Pear — 现在只有 2 项了 +alert( fruits ); // Banana, Pear — 现在有 2 项了 ``` ...但是数组真正特殊的是它们的内部实现。JavaScript 引擎尝试把这些元素一个接一个地存储在连续的内存区域,就像本章的插图显示的一样,而且还有一些其它的优化,以使数组运行得非常快。 diff --git a/1-js/05-data-types/05-array-methods/article.md b/1-js/05-data-types/05-array-methods/article.md index 56f4cef483..d9f3963eef 100644 --- a/1-js/05-data-types/05-array-methods/article.md +++ b/1-js/05-data-types/05-array-methods/article.md @@ -667,7 +667,7 @@ let users = [ ]; *!* -// 找到比 users 小的所有 user +// 找到比 user 小的所有 users let youngerUsers = users.filter(user.younger, user); */!* diff --git a/1-js/06-advanced-functions/01-recursion/article.md b/1-js/06-advanced-functions/01-recursion/article.md index 34fa931f75..bcc4af5f7e 100644 --- a/1-js/06-advanced-functions/01-recursion/article.md +++ b/1-js/06-advanced-functions/01-recursion/article.md @@ -416,7 +416,7 @@ let arr = [obj1, obj2, obj3]; ...但是用数组有个问题。「删除元素」和「插入元素」操作代价非常大。例如,`arr.unshift(obj)` 操作必须对所有元素重新编号以便为新的元素 `obj` 腾出空间,而且如果数组很大,会很耗时。`arr.shift()` 同理。 -唯一对数组结构做修改而不需要大量重排的操作就是在数组的两端:`arr.push/pop`。所以对大队列来说,数组会很慢。 +唯一对数组结构做修改而不需要大量重排的操作就是在数组的末端:`arr.push/pop`。所以对大队列来说,数组会很慢。 如果我们真的需要快速插入、删除的话,我们可以选择另一种叫做[链表](https://en.wikipedia.org/wiki/Linked_list)的数据结构。