WEB开发网
开发学院网页设计JavaScript javascript面向对象之我解 阅读

javascript面向对象之我解

 2010-09-14 13:32:52 来源:WEB开发网   
核心提示: 另一个联想到的问题是微软的Asp.Net Ajax实现中,几乎类的所有方法都是内联定义的,javascript面向对象之我解(5),有批评说这样的实现会降低效率,这个我自然同意,由于子类中依然是内联属性,不会出现prototype中的复杂属性副作用,但是同时是不是有另外一个优点:如果同样使

另一个联想到的问题是微软的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、构造函数的实现有侵入性,

上一页  1 2 3 4 5 6 7 8  下一页

Tags:javascript 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接