【问题标题】:How to have multiple objects extend 1 object in javascript?如何让多个对象在 javascript 中扩展 1 个对象?
【发布时间】:2015-09-01 18:21:47
【问题描述】:

在 javascript 中,我定义了一个对象(如抽象类)

var abstractclass = function() {

};

现在我想让其他一些类扩展abstractclass。我就是这样做的,但我认为这不是最好的方法。我只是在类中创建了一个父类的实例,然后我只使用父类。

var abstractclassA = function() {
    var parent = new abstractclass();
};

var abstractclassB = function() {
    var parent = new abstractclass();
};

var abstractclassC = function() {
    var parent = new abstractclass();
};

var instance1 = new abstractclassA();
var instance2 = new abstractclassB();
var instance3 = new abstractclassC();

有没有更好的办法?

谢谢

【问题讨论】:

  • 你真的是指 OOP 意义上的“抽象”吗?
  • 不,我只是称之为抽象。
  • 你在用这些parent 变量做什么?没有?那么abstractclass 到底是怎么回事?请提供完整的、有意义的代码。

标签: javascript class oop inheritance multiple-inheritance


【解决方案1】:

如果您可以使用像underscorejs 这样的库,它们有一个扩展功能,我认为它会满足您的需求。 如果没有,那么您可以查看它的Annotated Source,看看他们是如何实现它的。 最后,backbone's objects 做一些与你所寻求的非常相似的事情。所以你也可以看看他们的Annotated Source

【讨论】:

    【解决方案2】:

    通常我会这样做:

    var abstractClass = function(){
    
    };
    
    var classB = function(){
    
    };
    
    classB.prototype = new abstractClass();
    

    这样,classB 的实例也会变成 abstractClass 的实例

    【讨论】:

    • 我会使用 Object.create 代替(如果你可以在 IE9 上切断支持)。所以 classB.prototype = Object.create(abstractClass.prototype);或者只是传入一个对象字面量。
    猜你喜欢
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    相关资源
    最近更新 更多