Skip to content

Commit 664062a

Browse files
committed
fix typo
1 parent d9abdb6 commit 664062a

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

chapters/JavaScript_Core/Object_Oriented_Javascript/Javascript_Prototypal_Inheritance.md

+10-8
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* 构造函数, Constructor
99
* 继承, Inheritance
1010
* 实例, Instance
11-
* 实力化, Instantiation
11+
* 实例化, Instantiation
1212
* 方法, Method
1313
* 多态, Polymorphism
1414
* 接口, Interface
@@ -145,7 +145,7 @@ superFoo.bar(); // => "haha, haha"
145145

146146
```
147147
Object.prototype.__proto__ === null
148-
```
148+
```
149149
也就是Object构造函数上,`prototype`这个对象的构造函数上已经没有`prototype`了。
150150

151151
我们来看之前`Foo``SuperFoo`的例子,我们抽象出成员查找的流程如下:
@@ -166,7 +166,7 @@ superFoo本身 => SuperFoo.prototype => Foo.prototype => Object.prototype
166166
* `Foo.prototype`:
167167
* 查找到这一次层,纯粹是因为我们制定了`SuperFoo.prototype`的值,回想上一条
168168
* `Object.prototype`
169-
* 这是该原型链的最后一环,因为`Object.prototype`这个对象的原型是`null`,我们无法继续查找
169+
* 这是该原型链的最后一环,因为`Object.prototype`这个对象的原型是`null`,我们无法继续查找
170170
* 这是JavaScript中所有对象的祖先,上面定义了一个简单对象上存在的属性和方法,例如`toString`
171171

172172
那么,当在`SuperFoo`上添加`bar`方法呢?这时,JavaScript引擎会在`SuperFoo.prototype`的本地添加`bar`这个方法。当你再次查找`bar`方法时,按照我们之前说明的流程,会优先找到这个新添加的方法,而不会找到再原型链更后面的`Foo.prototype.bar`
@@ -326,12 +326,12 @@ XObject.extend = function(props) {
326326
if(props) {
327327
merge(Class.prototype, props);
328328
}
329-
329+
330330
// copy `extend`
331331
// should not use code like this; will throw at ES6
332332
// Class.extend = arguments.callee;
333333
Class.extend = XObject.extend;
334-
334+
335335
return Class;
336336
};
337337
@@ -361,7 +361,7 @@ console.log(superFoo.bar()); // => "super bar"
361361
* `XObject.extend`可以接受一个包含属性和方法的对象来定义子类
362362
* `XObject`的所有子类,都没有定义构造函数逻辑的机会!真是难以接受的:
363363
* 我们偏好一个类上的`init`方法来初始化对象,而将构造函数本身最简化
364-
* 绕开工厂方法的实现过程中,参数传递如何传递到构造函数的问题
364+
* 这个`init`方法绕开了工厂方法的实现过程中,参数传递如何传递到构造函数的问题
365365
* 可以支持更多新的特性,例如`super`属性、`mixin`特性等
366366

367367
## 总结,然后呢?
@@ -372,10 +372,12 @@ console.log(superFoo.bar()); // => "super bar"
372372
* Angular中的函数依赖注入
373373
* ...
374374

375-
但是,这些框架中对象系统的出发点都在本文所阐述的内容之中。如果作为教学,John Resig在2008年的一篇博客中[^3],总结了一个现代JavaScript框架中的对象系统的雏形。我创建了[docco代码注解](/docco/john_resig_extend.html)来立即这段代码,本文也会结束在这段代码的注解。
375+
但是,这些框架中对象系统的出发点都在本文所阐述的内容之中。作为教学,John Resig在2008年的一篇博客中[^3]总结了一个现代JavaScript框架中的对象系统的雏形。
376+
377+
我创建了[docco代码注解](/docco/john_resig_extend.html)来立即这段代码,本文也会结束在这段代码的注解。强力推荐大家去阅读该注解文档。
376378

377379
还有一些更高级的话题和技巧,会在另外一篇文章中给出。
378380

379381
[^1]: http://javascript.crockford.com/prototypal.html
380382
[^2]: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create
381-
[^3]: http://ejohn.org/blog/simple-javascript-inheritance/
383+
[^3]: http://ejohn.org/blog/simple-javascript-inheritance/

docco/john_resig_extend.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
// 这里是对象系统的根类构造函数,
2828
// 这句话也很有争议:
2929
// * `this`被期望指向全局对象,这在`strict mode`中是不可能实现的,会*导致报错*
30-
// * 算然也叫`Class`,但是和后面我们返回Class并不是一回事。这无疑造成了混淆
30+
// * 这里虽然也叫`Class`,但是和后面我们返回Class并不是一回事。这无疑造成了混淆
3131
this.Class = function(){};
3232

3333
// `extend`方法用来根据一个基类创建子类。显而易见,在这个对象系统的实现中,`Class`就是最顶层的根类

0 commit comments

Comments
 (0)