第六章.原型与面向对象(6.Object-orientation with prototypes)[完成]
翻译 Secrets of the JavaScript Ninja (JavaScript忍者禁术)
第六章.原型与面向对象(6.Object-orientation with prototypes)
本章重点:
1.利用函数实现构造器
2.解释prototyes
3.利用prototypes实现对象的扩展
4.avoiding common gotchas
5.利用inheritace构建classes
看到prototypes你可能会觉得他与object是紧密联系的,但是,再次提醒各位,我们的重点还是function,Prototypes是一种很方便的定义classes的途径,但是它的本质是属于function的特性
总的来说,如果你很明显的在使用prototypes就是在使用一种classical-style形式的面向对象编程和继承的技术。
让我们开始看看如何使用prototypes
6.1 实例化和原型(Instantiation and prototypes)
所有functions都拥有一个属性:prototype,
初始状态中prototype指向一个空的object。
这个属性只是在这个函数被当作构造器来调用的时候,
才有作用,其余的情况下,没啥用。
在第三章中,我们利用关键字new来调用一个函数,这个函数就成为了构造器,
它会产出一个新的对象实例作为他的函数上下文(function context)
鉴于对象实例化这个部分很重要,下面我们详细的讨论一下,以便我们能真正理解这个知识点。
6.1.1 对象实例化(Object instantiation)
通常最简单的一种创建对象的方式如下:
var o = {};
但是这种形式有些缺陷,如果是一个面向对象背景的视角来看,这样做是不便利,并且缺少封装。
JavaScript提供了一种途径,虽然和大多数的语言都不用一一样,例如面向对象阵营中的Java,C++。
JavaScript利用new这个关键字,通过构造器函数来实例化一个对象,
...