8
8
* 构造函数, Constructor
9
9
* 继承, Inheritance
10
10
* 实例, Instance
11
- * 实力化 , Instantiation
11
+ * 实例化 , Instantiation
12
12
* 方法, Method
13
13
* 多态, Polymorphism
14
14
* 接口, Interface
@@ -145,7 +145,7 @@ superFoo.bar(); // => "haha, haha"
145
145
146
146
```
147
147
Object.prototype.__proto__ === null
148
- ```
148
+ ```
149
149
也就是Object构造函数上,` prototype ` 这个对象的构造函数上已经没有` prototype ` 了。
150
150
151
151
我们来看之前` Foo ` 和` SuperFoo ` 的例子,我们抽象出成员查找的流程如下:
@@ -166,7 +166,7 @@ superFoo本身 => SuperFoo.prototype => Foo.prototype => Object.prototype
166
166
* ` Foo.prototype ` :
167
167
* 查找到这一次层,纯粹是因为我们制定了` SuperFoo.prototype ` 的值,回想上一条
168
168
* ` Object.prototype `
169
- * 这是该原型链的最后一环,因为` Object.prototype ` 这个对象的原型是` null ` ,我们无法继续查找
169
+ * 这是该原型链的最后一环,因为` Object.prototype ` 这个对象的原型是` null ` ,我们无法继续查找
170
170
* 这是JavaScript中所有对象的祖先,上面定义了一个简单对象上存在的属性和方法,例如` toString `
171
171
172
172
那么,当在` SuperFoo ` 上添加` bar ` 方法呢?这时,JavaScript引擎会在` SuperFoo.prototype ` 的本地添加` bar ` 这个方法。当你再次查找` bar ` 方法时,按照我们之前说明的流程,会优先找到这个新添加的方法,而不会找到再原型链更后面的` Foo.prototype.bar ` 。
@@ -326,12 +326,12 @@ XObject.extend = function(props) {
326
326
if(props) {
327
327
merge(Class.prototype, props);
328
328
}
329
-
329
+
330
330
// copy `extend`
331
331
// should not use code like this; will throw at ES6
332
332
// Class.extend = arguments.callee;
333
333
Class.extend = XObject.extend;
334
-
334
+
335
335
return Class;
336
336
};
337
337
@@ -361,7 +361,7 @@ console.log(superFoo.bar()); // => "super bar"
361
361
* ` XObject.extend ` 可以接受一个包含属性和方法的对象来定义子类
362
362
* ` XObject ` 的所有子类,都没有定义构造函数逻辑的机会!真是难以接受的:
363
363
* 我们偏好一个类上的` init ` 方法来初始化对象,而将构造函数本身最简化
364
- * 绕开工厂方法的实现过程中 ,参数传递如何传递到构造函数的问题
364
+ * 这个 ` init ` 方法绕开了工厂方法的实现过程中 ,参数传递如何传递到构造函数的问题
365
365
* 可以支持更多新的特性,例如` super ` 属性、` mixin ` 特性等
366
366
367
367
## 总结,然后呢?
@@ -372,10 +372,12 @@ console.log(superFoo.bar()); // => "super bar"
372
372
* Angular中的函数依赖注入
373
373
* ...
374
374
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 ) 来立即这段代码,本文也会结束在这段代码的注解。强力推荐大家去阅读该注解文档。
376
378
377
379
还有一些更高级的话题和技巧,会在另外一篇文章中给出。
378
380
379
381
[ ^ 1 ] : http://javascript.crockford.com/prototypal.html
380
382
[ ^ 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/
0 commit comments