JavaScript创建派生类而不调用超类构造函数

JavaScript创建派生类而不调用超类构造函数,javascript,Javascript,所以我通过使用类的构造函数来定义类,在这些函数中我定义了它们的所有属性,并做了构造函数y的事情,比如设置监听器等等。定义了构造函数之后,我就直接将它的所有函数添加到它的原型中 要进行继承,我基本上是这样做的: namespace.Class = function(param) { namespace.BaseClass.call(this, param); //Other constructor stuff } namespace.Class.prototype = new

所以我通过使用类的构造函数来定义类,在这些函数中我定义了它们的所有属性,并做了构造函数y的事情,比如设置监听器等等。定义了构造函数之后,我就直接将它的所有函数添加到它的原型中

要进行继承,我基本上是这样做的:

namespace.Class = function(param) {
    namespace.BaseClass.call(this, param);

    //Other constructor stuff
}

namespace.Class.prototype = new namespace.BaseClass();
namespace.Class.constructor = namespace.Class;
问题是在创建原型时会调用基类的构造函数,这会导致原型成为该类型的实例。这可能不是一个问题,但它只是感觉“凌乱”和性能滞后,并且可能有问题,因为我必须检查参数是否已定义

所以我的问题是:是否可以在不调用其构造函数的情况下扩展基类?或者我必须使用一些技巧,比如检查
param
是否未定义,或者使用一个循环来做一些事情


抱歉,如果我错过了原型继承的全部要点,我正在接受uni中的Java教育,而Java不支持这种类型的东西。

是的,这是可能的。首选方法是使用:

这将创建一个新的空对象,该对象继承自
BaseClass.prototype
,这就是此时所需的全部内容


这是一个比创建父类实例更干净的解决方案,因为正如您所提到的,如果超类需要参数,您不知道要传递哪些参数。

是的,这是可能的。首选方法是使用:

这将创建一个新的空对象,该对象继承自
BaseClass.prototype
,这就是此时所需的全部内容


这是一个比创建父类实例更干净的解决方案,因为正如您所提到的,如果超类需要参数,您不知道要传递哪些参数。

这是我多年来第二次尝试弄清楚如何做某事,事实证明,
Object
上有一个方法来做这件事……这是我多年来第二次尝试找出如何做某事,结果是,
Object
上有一个方法来做这件事……你可能想看看这个库:你可能想看看这个库:
namespace.Class.prototype = Object.create(namespace.BaseClass.prototype);