2

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

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

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

    //Other constructor stuff
}

namespace.Class.prototype = new namespace.BaseClass();
namespace.Class.constructor = namespace.Class;

问题是在创建原型时会调用 BaseClass 的构造函数,这会导致原型成为该类型的实例。这可能不是问题,但它只是感觉“混乱”和性能滞后,并且可能存在错误,因为我必须检查参数是否已定义。

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

抱歉,如果我错过了原型继承的全部要点,我在 uni 中学习 Java,而 Java 不赞成这种类型的东西。

4

1 回答 1

4

对的,这是可能的。首选方法是使用Object.create [MDN]

namespace.Class.prototype = Object.create(namespace.BaseClass.prototype);

这将创建一个新的空对象,它继承自BaseClass.prototype,这就是您现在所需要的。

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

于 2013-04-16T10:42:57.243 回答