Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的继承_Javascript_Inheritance_Oop_Prototype_Interface - Fatal编程技术网

Javascript中的继承

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

我正在研究一个简单的问题来表示一些具有层次结构的类型。有一个数据行包含一些数据,数据可能因行的类型而异。简单行可能只有标题和日期,而扩展行可能包含标题、说明、日期和图像。我对Javascript并不陌生,但对它的理解还不够深入。举一个简单的例子,下面是我将如何用Java编写它:

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架构师!他是 以其在介绍方面的工作而闻名 JavaScript对象表示法(JSON) -

这些文章是必读的,我相信它们将帮助您了解如何构造对象。

“Javascript没有接口或抽象类,恐怕我还没有深入到原型意义上的思考。”


您不需要无类型语言的接口。接口只允许编译器确保对象具有某些功能,以便进行类型检查。使用Javascript,您只需调用所需的方法,并希望(好吧,请确保您自己……js不会帮助您)调用它的对象具有该功能。

感谢您提供的链接。总体而言,我非常喜欢MooTools
类和API设计,现在阅读这篇相当长的文章来决定是否在我的项目中使用MooTools而不是jQuery。我认为试图将JavaScript强制纳入经典的OO模式是错误的。我更喜欢Crockford对JS功能的拥抱。这些都是非常棒的读物。。这确实需要一个思维上的重大转变,我想我会一整天都在处理一些小细节,但这些链接确实帮助你澄清了很多疑问。我第一次读这三篇文章时也有同样的经历:)