所以我通过使用它们的构造函数来定义类,并在这些函数中定义它们的所有属性,并做构造函数,比如设置监听器等。在定义构造函数之后,我将其所有函数直接添加到其原型中。
要做继承,我基本上是这样做的:
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
是否未定义或使用循环做东西?
很抱歉,如果我错过了原型继承的全部内容,我正在大学教授Java,而Java则不赞成这种类型的东西。
答案 0 :(得分:4)
是的,这是可能的。首选方法是使用Object.create
[MDN]:
namespace.Class.prototype = Object.create(namespace.BaseClass.prototype);
这会创建一个新的空对象,它继承自BaseClass.prototype
,这就是您需要的所有内容。
这是一个比创建父类实例更清晰的解决方案,因为正如您已经提到的,如果超类需要参数,则不知道要传递哪些参数。