5.7.3 JavaScript中基于类的继承
JavaScript中基于
prototype的继承机制可以很好地工作,但是对于一些已经习惯于C++和Java等语言中基于类的继承机制的人来说,JavaScript的
prototype继承机制不是一种自然的编程方法。如果你不想用基于
prototype的继承,而想用一种基于类的继承方法,那就继续读下去吧。
Netscape的Bob Clary
[4]也提出了一个方法,它可以使一个对象使用一个通用的脚本从另一个对象继承属性和函数。这个脚本只是将“父”对象的属性和函数简单地复制到“子”对象。为此,我们将说明如何对脚本稍加修改,从而只是将子对象中不存在的属性和函数复制到子对象;这样一来,子对象中的函数就能覆盖父对象的函数。在两个对象之间创建继承关系的通用函数如下:
function createInheritance(parent, child) {
var property;
for(property in parent) {
if(!child[property]) {
child[property] = parent[property];
}
}
}
createInheritance函数有两个参数,父对象和子对象。这个函数只是迭代处理父对象的所有成员(成员就是属性或函数),如果某个成员在子对象中不存在,则复制到子对象。
使用
createInheritance函数相当简单:首先创建子对象的一个实例,然后使用
createInheritance函数,为它传递子对象以及父对象的一个实例,如下:
var child = new Child();
createInheritance(new Parent(), child);
父对象中有而子对象中没有的所有属性和方法将复制到子对象。