Javascript中的继承
我正在研究一个简单的问题来表示一些具有层次结构的类型。有一个数据行包含一些数据,数据可能因行的类型而异。简单行可能只有标题和日期,而扩展行可能包含标题、说明、日期和图像。我对Javascript并不陌生,但对它的理解还不够深入。举一个简单的例子,下面是我将如何用Java编写它:Javascript中的继承,javascript,inheritance,oop,prototype,interface,Javascript,Inheritance,Oop,Prototype,Interface,我正在研究一个简单的问题来表示一些具有层次结构的类型。有一个数据行包含一些数据,数据可能因行的类型而异。简单行可能只有标题和日期,而扩展行可能包含标题、说明、日期和图像。我对Javascript并不陌生,但对它的理解还不够深入。举一个简单的例子,下面是我将如何用Java编写它: interface Row { View getView(); } class BasicRow implements Row { private String title; private S
interface Row {
View getView();
}
class BasicRow implements Row {
private String title;
private String description;
public BasicRow(String title, String description) {
this.title = title;
this.description = description;
}
public View getView() {
// return a View object with title and description
}
}
class ExtendedRow implements Row {
private String title;
private String description;
private Date date;
private Image image;
public ExtendedRow(String title, String description, Date date, Image image) {
this.title = title;
this.description = description;
this.date = date;
this.image = image;
}
public View getView() {
// return a View object with title
// description, date, and image
}
}
这里可以做的OO改进很少,例如从BasicRow扩展ExtendedRow,只定义新字段,并重写getView方法
Javascript没有接口或抽象类,恐怕我还没有深入到原型意义上的思考。因此,我如何在Javascript中实现上述示例中的基本功能,其中有一个基类或接口,以及从该基类扩展而来的两个类,每个类都有自己的特定行为 非常感谢您的指点。请查看。Resig的作品和(图书馆的一部分)都是Edward院长的衍生作品
希望能有所帮助。看看道格拉斯·克罗克福德的文章:
您不需要无类型语言的接口。接口只允许编译器确保对象具有某些功能,以便进行类型检查。使用Javascript,您只需调用所需的方法,并希望(好吧,请确保您自己……js不会帮助您)调用它的对象具有该功能。感谢您提供的链接。总体而言,我非常喜欢MooTools
类和API设计,现在阅读这篇相当长的文章来决定是否在我的项目中使用MooTools而不是jQuery。我认为试图将JavaScript强制纳入经典的OO模式是错误的。我更喜欢Crockford对JS功能的拥抱。这些都是非常棒的读物。。这确实需要一个思维上的重大转变,我想我会一整天都在处理一些小细节,但这些链接确实帮助你澄清了很多疑问。我第一次读这三篇文章时也有同样的经历:)