Skip to content

Commit b9cfa24

Browse files
committed
Fixed broken links, outdated translation
1 parent e8dbe14 commit b9cfa24

File tree

10 files changed

+69
-76
lines changed

10 files changed

+69
-76
lines changed

doc/zh/function/closures.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
##闭包和引用
22

33
闭包是 JavaScript 一个非常重要的特性,这意味着当前作用域**总是**能够访问外部作用域中的变量。
4-
因为 [函数](#scopes) 是 JavaScript 中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数。
4+
因为 [函数](#function.scopes) 是 JavaScript 中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数。
55

66
###模拟私有变量
77

@@ -56,7 +56,7 @@
5656

5757
###避免引用错误
5858

59-
为了正确的获得循环序号,最好使用 [匿名包裹器](#scopes)**[译者注][30]**其实就是我们通常说的自执行匿名函数)。
59+
为了正确的获得循环序号,最好使用 [匿名包裹器](#function.scopes)**[译者注][30]**其实就是我们通常说的自执行匿名函数)。
6060

6161
for(var i = 0; i < 10; i++) {
6262
(function(e) {

doc/zh/function/general.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
function foo() {}
99

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

1313
foo(); // 正常运行,因为foo在代码运行前已经被创建
@@ -25,7 +25,7 @@
2525

2626
由于 `var` 定义了一个声明语句,对变量 `foo` 的解析是在代码运行之前,因此 `foo` 变量在代码运行时已经被定义过了。
2727

28-
但是由于赋值语句只在运行时执行,因此在相应代码执行之前, `foo` 的值缺省为 [undefined](#undefined)
28+
但是由于赋值语句只在运行时执行,因此在相应代码执行之前, `foo` 的值缺省为 [undefined](#core.undefined)
2929

3030
###命名函数的赋值表达式
3131

@@ -37,7 +37,7 @@
3737
bar(); // 出错:ReferenceError
3838

3939
`bar` 函数声明外是不可见的,这是因为我们已经把函数赋值给了 `foo`
40-
然而在 `bar` 内部依然可见。这是由于 JavaScript 的 [命名处理](#scopes) 所致,
40+
然而在 `bar` 内部依然可见。这是由于 JavaScript 的 [命名处理](#function.scopes) 所致,
4141
函数名在函数内*总是*可见的。
4242

4343
[30]: http://cnblogs.com/sanshi/

doc/zh/function/scopes.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
}
1212

1313
> **注意:** 如果不是在赋值语句中,而是在 return 表达式或者函数参数中,`{...}` 将会作为代码段解析,
14-
> 而不是作为对象的字面语法解析。如果考虑到 [自动分号插入](#semicolon),这可能会导致一些不易察觉的错误。
14+
> 而不是作为对象的字面语法解析。如果考虑到 [自动分号插入](#core.semicolon),这可能会导致一些不易察觉的错误。
1515
1616
**[译者注][30]**如果 `return` 对象的左括号和 `return` 不在一行上就会出错。
1717

@@ -52,15 +52,15 @@ JavaScript 中没有显式的命名空间定义,这就意味着所有对象都
5252
起初这看起来并不是大问题,但是当有成千上万行代码时,不使用 `var` 声明变量将会带来难以跟踪的 BUG。
5353

5454
// 全局作用域
55-
var items = [/* some list */];
55+
var items = [/* 数组 */];
5656
for(var i = 0; i < 10; i++) {
5757
subLoop();
5858
}
5959

6060
function subLoop() {
6161
// subLoop 函数作用域
6262
for(i = 0; i < 10; i++) { // 没有使用 var 声明变量
63-
// do amazing stuff!
63+
// 干活
6464
}
6565
}
6666

@@ -70,7 +70,7 @@ JavaScript 中没有显式的命名空间定义,这就意味着所有对象都
7070

7171
###局部变量
7272

73-
JavaScript 中局部变量只可能通过两种方式声明,一个是作为[函数](#functions)参数,另一个是通过 `var` 关键字声明。
73+
JavaScript 中局部变量只可能通过两种方式声明,一个是作为[函数](#function)参数,另一个是通过 `var` 关键字声明。
7474

7575
// 全局变量
7676
var foo = 1;
@@ -88,7 +88,7 @@ JavaScript 中局部变量只可能通过两种方式声明,一个是作为[
8888

8989
`foo``i` 是函数 `test` 内的局部变量,而对 `bar` 的赋值将会覆盖全局作用域内的同名变量。
9090

91-
### 变量声明提升(Hoisting)
91+
###变量声明提升(Hoisting)
9292

9393
JavaScript 会**提升**变量声明。这意味着 `var` 表达式和 `function` 声明都将会被提升到当前作用域的顶部。
9494

@@ -170,9 +170,9 @@ JavaScript 会**提升**变量声明。这意味着 `var` 表达式和 `function
170170

171171
###名称解析顺序
172172

173-
JavaScript 中的所有作用域,包括*全局作用域*,都有一个特别的名称 [`this`](#this) 指向当前对象。
173+
JavaScript 中的所有作用域,包括*全局作用域*,都有一个特别的名称 [`this`](#function.this) 指向当前对象。
174174

175-
函数作用域内也有默认的变量 [`arguments`](#arguments),其中包含了传递到函数中的参数。
175+
函数作用域内也有默认的变量 [`arguments`](#function.arguments),其中包含了传递到函数中的参数。
176176

177177
比如,当访问函数内的 `foo` 变量时,JavaScript 会按照下面顺序查找:
178178

@@ -196,7 +196,7 @@ JavaScript 中的所有作用域,包括*全局作用域*,都有一个特别
196196

197197
})(); // 立即执行此匿名函数
198198

199-
匿名函数被认为是 [表达式](#functions);因此为了可调用性,它们首先会被执行。
199+
匿名函数被认为是 [表达式](#function);因此为了可调用性,它们首先会被执行。
200200

201201
( // 小括号内的函数首先被执行
202202
function() {}

doc/zh/function/this.md

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

2020
> **ES5 注意:** 在严格模式下(strict mode),不存在全局变量。
2121
> 这种情况下 `this` 将会是 `undefined`
22-
> [译者注][30]:ES5指的是ECMAScript 5,是 2009-12 发布的最新的 JavaScript 版本。
2322
2423
###方法调用
2524

@@ -31,7 +30,7 @@ JavaScript 有一套完全不同于其它语言的对 `this` 的处理机制。
3130

3231
new foo();
3332

34-
如果函数倾向于和 `new` 关键词一块使用,则我们称这个函数是 [构造函数](#constructors)
33+
如果函数倾向于和 `new` 关键词一块使用,则我们称这个函数是 [构造函数](#function.constructors)
3534
在函数内部,`this` 指向*新创建*的对象。
3635

3736
###显式的设置 `this`
@@ -76,7 +75,7 @@ JavaScript 有一套完全不同于其它语言的对 `this` 的处理机制。
7675
}
7776

7877
`that` 只是我们随意起的名字,不过这个名字被广泛的用来指向外部的 `this` 对象。
79-
[闭包](#closures) 一节,我们可以看到 `that` 可以作为参数传递。
78+
[闭包](#function.closures) 一节,我们可以看到 `that` 可以作为参数传递。
8079

8180
###方法的赋值表达式
8281

@@ -87,7 +86,7 @@ JavaScript 有一套完全不同于其它语言的对 `this` 的处理机制。
8786

8887
上例中,`test` 就像一个普通的函数被调用;因此,函数内的 `this` 将不再被指向到 `someObject` 对象。
8988

90-
虽然 `this` 的晚绑定特性似乎并不友好,但是这确实[基于原型继承](#prototype)赖以生存的土壤。
89+
虽然 `this` 的晚绑定特性似乎并不友好,但是这确实[基于原型继承](#object.prototype)赖以生存的土壤。
9190

9291
function Foo() {}
9392
Foo.prototype.method = function() {};

doc/zh/intro/index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,8 @@
77
JavaScript 秘密花园**不是**用来教你 JavaScript。为了更好的理解这篇文章的内容,
88
你需要事先学习 JavaScript 的基础知识。在 Mozilla 开发者网络中有一系列非常棒的 JavaScript 学习[向导][1]
99

10+
> **ES5 注意:** **译者注:** ES5 指的是ECMAScript 5,是 ECMAScript 标准语言的下一版本,正在开发中。
11+
JavaScript 是此标准语言的一个方言。
12+
1013
[1]: https://developer.mozilla.org/en/JavaScript/Guide
1114

doc/zh/intro/license.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

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

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

doc/zh/object/general.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
##对象使用和属性
22

3-
JavaScript 中所有变量都是对象,除了两个例外 [`null`](#undefined)[`undefined`](#undefined)
3+
JavaScript 中所有变量都是对象,除了两个例外 [`null`](#core.undefined)[`undefined`](#core.undefined)
44

55
false.toString() // 'false'
66
[1, 2, 3].toString(); // '1,2,3'
@@ -25,7 +25,7 @@ JavaScript 中所有变量都是对象,除了两个例外 [`null`](#undefined)
2525
JavaScript 的对象可以作为[*哈希表*][1]使用,主要用来保存命名的键与值的对应关系。
2626

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

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

doc/zh/object/hasownproperty.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
##`hasOwnProperty` 函数
22

3-
为了判断一个对象是否包含*自定义*属性而*不是*[原型链](#prototype)上的属性,
3+
为了判断一个对象是否包含*自定义*属性而*不是*[原型链](#object.prototype)上的属性,
44
我们需要使用继承自 `Object.prototype``hasOwnProperty` 方法。
55

66
> **注意:** 通过判断一个属性是否 `undefined`**不够**的。
@@ -41,7 +41,7 @@ JavaScript **不会**保护 `hasOwnProperty` 被非法占用,因此如果一
4141
###结论
4242

4343
当检查对象上某个属性是否存在时,`hasOwnProperty`**唯一**可用的方法。
44-
同时在使用 [`for in` loop](#forinloop) 遍历对象时,推荐**总是**使用 `hasOwnProperty` 方法,
45-
这将会避免[原型](#prototype)对象扩展带来的干扰。
44+
同时在使用 [`for in` loop](#object.forinloop) 遍历对象时,推荐**总是**使用 `hasOwnProperty` 方法,
45+
这将会避免[原型](#object.prototype)对象扩展带来的干扰。
4646

4747
[30]: http://cnblogs.com/sanshi/

doc/zh/object/prototype.md

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,11 @@ other way around is a far more difficult task.)
4040
{method: ...};
4141
Object.prototype
4242
{toString: ... /* etc. */};
43-
43+
*
4444
上面的例子中,`test` 对象从 `Bar.prototype``Foo.prototype` 继承下来;因此,
45-
它能否访问 `Foo` 的原型方法 `method`。但是它不能访问 `Foo` 的实例属性 `value`
46-
因为这个属性在`Foo`[构造函数](#constructor)中定义。
47-
(But it will not have access to the property `value` of a
48-
`Foo` instance, since that property gets defined in the [constructor](#constructor)
49-
of `Foo`. But this constructor has to be called explicitly.)
50-
51-
> **[译者注][30]**我认为这个描述是错误的,`test.value` 是可以访问的。
52-
因为在设置 `Bar.prototype = new Foo();` 时,`value` 也就成为 `Bar.prototype` 上的一个属性。
53-
如果你有不同观点,可以到[我的博客][30]评论。
45+
它能访问 `Foo` 的原型方法 `method`。它也同时能够访问那**一个**作为它原型的 `Foo` 实例
46+
的属性 `value`。需要注意的是 `new Bar()` **不会**创造出一个新的 `Foo` 实例,而是
47+
重新使用设定为它的原型的实例;也就是说,所有的 `Bar` 实例都将会有**同样**`value` 属性。
5448

5549
> **注意:** **不要**使用 `Bar.prototype = Foo`,因为这不会执行 `Foo` 的原型,而是指向函数 `Foo`
5650
> 因此原型链将会回溯到 `Function.prototype` 而不是 `Foo.prototype`,因此 `method` 将不会在 Bar 的原型链上。
@@ -59,7 +53,7 @@ of `Foo`. But this constructor has to be called explicitly.)
5953

6054
当查找一个对象的属性时,JavaScript 会**向上**遍历原型链,直到找到给定名称的属性为止。
6155

62-
到查找到达原型链的顶部 - 也就是 `Object.prototype` - 但是仍然没有找到指定的属性,就会返回 [undefined](#undefined)
56+
到查找到达原型链的顶部 - 也就是 `Object.prototype` - 但是仍然没有找到指定的属性,就会返回 [undefined](#core.undefined)
6357

6458
###原型属性
6559

@@ -75,7 +69,7 @@ of `Foo`. But this constructor has to be called explicitly.)
7569

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

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

8074
###扩展内置类型的原型
8175

@@ -100,4 +94,3 @@ of `Foo`. But this constructor has to be called explicitly.)
10094
[3]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach
10195
[5]: http://en.wikipedia.org/wiki/Backport
10296
[30]: http://cnblogs.com/sanshi/
103-

0 commit comments

Comments
 (0)