Skip to content

Commit 564f58a

Browse files
committed
fix typo
1 parent 893c1e4 commit 564f58a

File tree

9 files changed

+37
-37
lines changed

9 files changed

+37
-37
lines changed

doc/zh/function/arguments.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ JavaScript 中每个函数内都能访问一个特别变量 `arguments`。这个
99
`arguments` 变量**不是**一个数组(`Array`)。
1010
尽管在语法上它有数组相关的属性 `length`,但它不从 `Array.prototype` 继承,实际上它是一个对象(`Object`)。
1111

12-
因此,无法对 `arguments` 变量使用标准的数组方法,比如 `push`, `pop` 或者 `slice`
12+
因此,无法对 `arguments` 变量使用标准的数组方法,比如 `push``pop` 或者 `slice`
1313
虽然使用 `for` 循环遍历也是可以的,但是为了更好的使用数组方法,最好把它转化为一个真正的数组。
1414

1515
###转化为数组
@@ -99,13 +99,13 @@ JavaScript 中每个函数内都能访问一个特别变量 `arguments`。这个
9999
然而,的确有一种情况会显著的影响现代 JavaScript 引擎的性能。这就是使用 `arguments.callee`
100100

101101
function foo() {
102-
arguments.callee; // do something with this function object
103-
arguments.callee.caller; // and the calling function object
102+
arguments.callee; // 使用这个函数对象
103+
arguments.callee.caller; // 以及这个函数对象的调用者
104104
}
105105

106106
function bigLoop() {
107107
for(var i = 0; i < 100000; i++) {
108-
foo(); // Would normally be inlined...
108+
foo(); // 通常情况会作为内联函数...
109109
}
110110
}
111111

doc/zh/function/closures.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
闭包是 JavaScript 一个非常重要的特性,这意味着当前作用域**总是**能够访问外部作用域中的变量。
44
因为 [函数](#function.scopes) 是 JavaScript 中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数。
55

6+
> 译者注:ES2015 中增加了块级作用域。
7+
68
###模拟私有变量
79

810
function Counter(start) {
@@ -23,7 +25,7 @@
2325
foo.get(); // 5
2426

2527
这里,`Counter` 函数返回两个闭包,函数 `increment` 和函数 `get`。 这两个函数都维持着
26-
对外部作用域 `Counter` 的引用,因此总可以访问此作用域内定义的变量 `count`.
28+
对外部作用域 `Counter` 的引用,因此总可以访问此作用域内定义的变量 `count`
2729

2830
###为什么不可以在外部访问私有变量
2931

@@ -44,13 +46,13 @@
4446

4547
for(var i = 0; i < 10; i++) {
4648
setTimeout(function() {
47-
console.log(i);
49+
console.log(i);
4850
}, 1000);
4951
}
5052

5153
上面的代码不会输出数字 `0``9`,而是会输出数字 `10` 十次。
5254

53-
`console.log` 被调用的时候,*匿名*函数保持对外部变量 `i` 的引用,此时 `for`循环已经结束, `i` 的值被修改成了 `10`.
55+
`console.log` 被调用的时候,*匿名*函数保持对外部变量 `i` 的引用,此时 `for`循环已经结束, `i` 的值被修改成了 `10`
5456

5557
为了得到想要的结果,需要在每次循环中创建变量 `i`**拷贝**
5658

@@ -61,7 +63,7 @@
6163
for(var i = 0; i < 10; i++) {
6264
(function(e) {
6365
setTimeout(function() {
64-
console.log(e);
66+
console.log(e);
6567
}, 1000);
6668
})(i);
6769
}
@@ -76,8 +78,8 @@
7678
setTimeout((function(e) {
7779
return function() {
7880
console.log(e);
79-
}
80-
})(i), 1000)
81+
};
82+
})(i), 1000);
8183
}
8284

8385

doc/zh/function/general.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
##函数声明与表达式
22

3-
函数是JavaScript中的一等对象,这意味着可以把函数像其它值一样传递。
3+
函数是 JavaScript 中的一等对象,这意味着可以把函数像其它值一样传递。
44
一个常见的用法是把*匿名函数*作为回调函数传递到异步函数中。
55

66
###函数声明
77

88
function foo() {}
99

1010
上面的方法会在执行前被 [解析(hoisted)](#function.scopes),因此它存在于当前上下文的*任意*一个地方,
11-
即使在函数定义体的上面被调用也是对的。
11+
即使在函数定义体的上面被调用也是对的。
1212

13-
foo(); // 正常运行,因为foo在代码运行前已经被创建
13+
foo(); // 正常运行,因为 foo 在代码运行前已经被创建
1414
function foo() {}
1515

1616
### 函数赋值表达式
@@ -39,7 +39,6 @@
3939
`bar` 函数声明外是不可见的,这是因为我们已经把函数赋值给了 `foo`
4040
然而在 `bar` 内部依然可见。这是由于 JavaScript 的 [命名处理](#function.scopes) 所致,
4141
函数名在函数内*总是*可见的。
42-
> **注意:**在IE8及IE8以下版本浏览器bar在外部也是可见的,是因为浏览器对命名函数赋值表达式进行了错误的解析,
42+
> **注意: **在 IE8 及 IE8 以下版本浏览器 bar 在外部也是可见的,是因为浏览器对命名函数赋值表达式进行了错误的解析,
4343
> 解析成两个函数 `foo``bar`
4444
45-
[30]: http://cnblogs.com/sanshi/

doc/zh/function/this.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ JavaScript 有一套完全不同于其它语言的对 `this` 的处理机制。
99

1010
当在全部范围内使用 `this`,它将会指向*全局*对象。
1111

12-
> **[译者注][30]**浏览器中运行的 JavaScript 脚本,这个全局对象是 `window`
12+
> **[译者注][30]**浏览器中运行的 JavaScript 脚本,这个全局对象是 `window`
13+
> 在 nodejs 环境中运行的 Javascript 脚本,这个全局对象是 `global`
1314
1415
###函数调用
1516

@@ -22,13 +23,13 @@ JavaScript 有一套完全不同于其它语言的对 `this` 的处理机制。
2223
2324
###方法调用
2425

25-
test.foo();
26+
test.foo();
2627

2728
这个例子中,`this` 指向 `test` 对象。
2829

2930
###调用构造函数
3031

31-
new foo();
32+
new foo();
3233

3334
如果函数倾向于和 `new` 关键词一块使用,则我们称这个函数是 [构造函数](#function.constructors)
3435
在函数内部,`this` 指向*新创建*的对象。
@@ -39,7 +40,7 @@ JavaScript 有一套完全不同于其它语言的对 `this` 的处理机制。
3940
4041
var bar = {};
4142
foo.apply(bar, [1, 2, 3]); // 数组将会被扩展,如下所示
42-
foo.call(bar, 1, 2, 3); // 传递到foo的参数是:a = 1, b = 2, c = 3
43+
foo.call(bar, 1, 2, 3); // 传递到 foo 的参数是:a = 1, b = 2, c = 3
4344

4445
当使用 `Function.prototype` 上的 `call` 或者 `apply` 方法时,函数内的 `this` 将会被
4546
**显式设置**为函数调用的第一个参数。
@@ -53,7 +54,7 @@ JavaScript 有一套完全不同于其它语言的对 `this` 的处理机制。
5354
###常见误解
5455

5556
尽管大部分的情况都说的过去,不过第一个规则(**[译者注][30]**这里指的应该是第二个规则,也就是直接调用函数时,`this` 指向全局对象)
56-
被认为是JavaScript语言另一个错误设计的地方,因为它**从来**就没有实际的用途。
57+
被认为是 JavaScript 语言另一个错误设计的地方,因为它**从来**就没有实际的用途。
5758

5859
Foo.method = function() {
5960
function test() {

doc/zh/intro/license.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
##许可
22

33
JavaScript 秘密花园在 [MIT license][1] 许可协议下发布,并存放在 [GitHub][2] 开源社区。
4-
如果你发现错误或者打字错误,请[新建一个任务单][3]或者发一个抓取请求。
4+
如果你发现错误,请[新建一个任务单][3]或者发一个抓取请求(Pull Request)
55
你也可以在 Stack Overflow 的 [JavaScript 聊天室][4]找到我们。
66

77
[1]: https://github.com/BonsaiDen/JavaScript-Garden/blob/next/LICENSE

doc/zh/object/forinloop.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,4 @@
3737
推荐**总是**使用 `hasOwnProperty`。不要对代码运行的环境做任何假设,不要假设原生对象是否已经被扩展了。
3838

3939
[1]: http://www.prototypejs.org/
40-
[30]: http://cnblogs.com/sanshi/
4140

doc/zh/object/general.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ JavaScript 中所有变量都可以当作对象使用,除了两个例外 [`nul
2525
JavaScript 的对象可以作为[*哈希表*][1]使用,主要用来保存命名的键与值的对应关系。
2626

2727
使用对象的字面语法 - `{}` - 可以创建一个简单对象。这个新创建的对象从 `Object.prototype`
28-
[继承](#object.prototype)下面,没有任何[自定义属性](#object.hasownproperty)
28+
[继承](#object.prototype)下来,没有任何[自定义属性](#object.hasownproperty)
2929

3030
var foo = {}; // 一个空对象
3131

@@ -34,7 +34,7 @@ JavaScript 的对象可以作为[*哈希表*][1]使用,主要用来保存命
3434

3535
### 访问属性
3636

37-
有两种方式来访问对象的属性,点操作符或者中括号操作符
37+
有两种方式来访问对象的属性,点操作符和中括号操作符
3838

3939
var foo = {name: 'kitten'}
4040
foo.name; // kitten

doc/zh/object/hasownproperty.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
99
`hasOwnProperty` 是 JavaScript 中唯一一个处理属性但是****查找原型链的函数。
1010

11-
// 修改Object.prototype
12-
Object.prototype.bar = 1;
11+
// 修改 Object.prototype
12+
Object.prototype.bar = 1;
1313
var foo = {goo: undefined};
1414

1515
foo.bar; // 1
@@ -18,8 +18,8 @@
1818
foo.hasOwnProperty('bar'); // false
1919
foo.hasOwnProperty('goo'); // true
2020

21-
只有 `hasOwnProperty` 可以给出正确和期望的结果,这在遍历对象的属性时会很有用。
22-
**没有**其它方法可以用来排除原型链上的属性,而不是定义在对象*自身*上的属性
21+
只有 `hasOwnProperty` 可以给出正确和期望的结果。可以查看 [`for in` 循环](#object.forinloop)
22+
章节来获取关于在迭代遍历对象属性的时候,何时使用 `hasOwnProperty` 的更多信息
2323

2424
###`hasOwnProperty` 作为属性
2525

@@ -35,7 +35,7 @@ JavaScript **不会**保护 `hasOwnProperty` 被非法占用,因此如果一
3535

3636
foo.hasOwnProperty('bar'); // 总是返回 false
3737

38-
// 使用其它对象的 hasOwnProperty,并将其上下文设置为foo
38+
// 使用其它对象的 hasOwnProperty,并将其上下文设置为 foo
3939
({}).hasOwnProperty.call(foo, 'bar'); // true
4040

4141
###结论
@@ -44,4 +44,3 @@ JavaScript **不会**保护 `hasOwnProperty` 被非法占用,因此如果一
4444
同时在使用 [`for in` loop](#object.forinloop) 遍历对象时,推荐**总是**使用 `hasOwnProperty` 方法,
4545
这将会避免[原型](#object.prototype)对象扩展带来的干扰。
4646

47-
[30]: http://cnblogs.com/sanshi/

doc/zh/object/prototype.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ other way around is a far more difficult task.)
2323

2424
function Bar() {}
2525

26-
// 设置Bar的prototype属性为Foo的实例对象
26+
// 设置 Bar 的 prototype 属性为 Foo 的实例对象
2727
Bar.prototype = new Foo();
2828
Bar.prototype.foo = 'Hello World';
2929

30-
// 修正Bar.prototype.constructor为Bar本身
30+
// 修正 Bar.prototype.constructor 为 Bar 本身
3131
Bar.prototype.constructor = Bar;
3232

33-
var test = new Bar() // 创建Bar的一个新实例
33+
var test = new Bar(); // 创建Bar的一个新实例
3434

3535
// 原型链
3636
test [Bar的实例]
@@ -58,7 +58,7 @@ other way around is a far more difficult task.)
5858
###原型属性
5959

6060
当原型属性用来创建原型链时,可以把**任何**类型的值赋给它(prototype)。
61-
然而将原子类型赋给 prototype 的操作将会被忽略。
61+
然而将原子类型(primitives)赋给 prototype 的操作将会被忽略。
6262

6363
function Foo() {}
6464
Foo.prototype = 1; // 无效
@@ -67,16 +67,16 @@ other way around is a far more difficult task.)
6767

6868
###性能
6969

70-
如果一个属性在原型链的上端,则对于查找时间将带来不利影响。特别的,试图获取一个不存在的属性将会遍历整个原型链。
70+
如果一个属性在原型链的上端,则对于查找时间将带来不利影响。注意,试图获取一个不存在的属性将会遍历整个原型链。
7171

7272
并且,当使用 [`for in`](#object.forinloop) 循环遍历对象的属性时,原型链上的**所有**属性都将被访问。
7373

7474
###扩展内置类型的原型
7575

76-
一个错误特性被经常使用,那就是扩展 `Object.prototype` 或者其他内置类型的原型对象。
76+
扩展 `Object.prototype` 或者其他内置类型的原型对象,作为一个错误特性,经常被使用
7777

7878
这种技术被称之为 [monkey patching][1] 并且会破坏*封装*。虽然它被广泛的应用到一些 JavaScript 类库中比如 [Prototype][2],
79-
但是我仍然不认为为内置类型添加一些*非标准*的函数是个好主意
79+
但是我仍然不赞同为内置类型添加一些*非标准*的函数
8080

8181
扩展内置类型的**唯一**理由是为了和新的 JavaScript 保持一致,比如 [`Array.forEach`][3]
8282

0 commit comments

Comments
 (0)