javascript面向对象之我解
2010-09-14 13:32:52 来源:WEB开发网另一个联想到的问题是微软的Asp.Net Ajax实现中,几乎类的所有方法都是内联定义的。有批评说这样的实现会降低效率,这个我自然同意。但是同时是不是有另外一个优点:如果同样使用了prototype继承法,则这种继承刚好类似于一个类(class1)是对其prototype(class1.prototype)的继承,实现了良好的覆写行为,同时因为基类的所有方法仍然存在于prototype中,对于某些需要调用基类方法的情形也可以满足。不知道微软当时是不是考虑过这个问题,呵呵。
下面列举两种实现方式:
第一种摘自《javascript的prototype继承》:
//类的继承-海浪版
Function.prototype.Extends = function (parentClass)
{
var Bs = new Function();
Bs.prototype = parentClass.prototype;
this.prototype = new Bs();
this.prototype.Super = parentClass;
this.prototype.constructor = this;
}
文中没有举例如何使用,我想大概是这样的方式使用:
function class1() {
}
function class2() {
Super();
}
class2.Extends(class1);
var c1 = new class1();
var c2 = new class2();
这种实现本希望解决原文中提出的四个缺点,但是我认为只是部分实现。
优点:
1、子类的构造函数得以保留,父类的构造函数可以在子类构造时调用了;
2、父类中内联定义的方法和属性在子类中也以内联的方式出现;
3、得益于2的实现,如果在父类中内联定义了object复杂属性,由于子类中依然是内联属性,不会出现prototype中的复杂属性副作用。
缺点:
1、构造函数的实现有侵入性,
Tags:javascript 面向 对象
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接