Javascript 扩展类并调用超级方法
我尝试创建一个函数来扩展JavaScript中的“类”Javascript 扩展类并调用超级方法,javascript,Javascript,我尝试创建一个函数来扩展JavaScript中的“类” function Extend(clazz, extend, info) { var properties = {}; if(typeof(info) != 'undefined') { properties.info = { value: info }; } else { properties.info = { va
function Extend(clazz, extend, info) {
var properties = {};
if(typeof(info) != 'undefined') {
properties.info = {
value: info
};
} else {
properties.info = {
value: {
name: 'Unknown',
author: 'Unknown',
version: '0.0.0'
}
};
}
clazz.prototype = Object.create(extend.prototype, properties);
eval(clazz.name + ' = clazz;');
}
下面是超级课堂:
function Module() {
this.isRegistred = function isRegistred() {
return true;
};
this.start = function start() {
/* Override Me */
};
this.stop = function stop() {
/* Override Me */
};
this.kill = function kill() {
/* Override Me */
};
this.onJoin = function onJoin(user) {
/* Override Me */
};
this.onLeave = function onLeave(user) {
/* Override Me */
};
this.onDice = function onDice(event) {
/* Override Me */
};
this.onMessage = function onMessage(sender, text, receiver) {
/* Override Me */
};
};
这里是扩展示例:
/**
@author Adrian Preuß <a.preuss@ChannelApp.de>
@version 1.0.0
*/
Extend(function Welcome() {
this.onJoin = function onJoin(user) {
user.sendPrivateMessage('Welcome!');
};
}, Module, {
name: 'Welcome',
author: 'Adrian Preuß',
version: '1.0.0'
});
您正试图通过
prototype
进行扩展,但您首先没有使用prototype
使用this
将函数分配给类时,将函数分配给实例,而不是类本身。如果查看Module.prototype
,它将不包含任何方法
解决问题的干净方法是向原型声明函数:
function Module() {}
Module.prototype.isRegistred = function isRegistred() {
return true;
};
// And so on...
好的,一些提示:在您的流程中,function Module()
(将函数isRegistered()
分配给this
)调用在哪里?另一个提示:您希望Welcome.prototype
链接到模块。prototype
实际上是空的。
function Module() {}
Module.prototype.isRegistred = function isRegistred() {
return true;
};
// And so on...