javascript继承-“…未定义”。名称空间问题?
我有一个名为ModuleSelector的“类”,它从服务器获取模块列表,并将它们显示为可单击的切换按钮。我试图创建一个名为Module的类,它扩展了ToggleButton类,并且仅对ModuleSelector可见 我遇到的问题是线路: Module.prototype=新的切换按钮;给出错误:未定义ToggleButton 我不明白为什么找不到它,因为我可以在模块函数中创建ToggleButton的新实例 ModuleSelector.js ToggleButton.jsjavascript继承-“…未定义”。名称空间问题?,javascript,Javascript,我有一个名为ModuleSelector的“类”,它从服务器获取模块列表,并将它们显示为可单击的切换按钮。我试图创建一个名为Module的类,它扩展了ToggleButton类,并且仅对ModuleSelector可见 我遇到的问题是线路: Module.prototype=新的切换按钮;给出错误:未定义ToggleButton 我不明白为什么找不到它,因为我可以在模块函数中创建ToggleButton的新实例 ModuleSelector.js ToggleButton.js 是的,你把它包装
是的,你把它包装在一个函数{}中;这基本上把它放在一个不同的名称空间中。只需将它们包装在一个函数中。。。或者干脆把包装纸一起去掉。这就是我的解决方案。你确定ToggleButton.js是在ModuleSelector.js之前加载的吗?我会检查的。谢谢伊万,这就是问题所在!傻咪咪,我明白了。我错过了窗户。请注意,对于createjs来说,它实际上很重要。
(function() {
function Module(id,name){
this.moduleID = id;
this.moduleName = name;
this.topics = [];
this.addTopic = function(topic){
this.topics.push(topic);
}
}
Module.prototype = new ToggleButton();
Module.prototype.constructor = Module;
var ModuleSelector = function (id) {
this.initialize(id);
};
var p = ModuleSelector.prototype = new createjs.Container();
p.Container_initialize = p.initialize;
p.initialize = function (id) {
this.Container_initialize();
//.....
};
window.ModuleSelector = ModuleSelector;
}());
(function() {
var ToggleButton = function(text) {
this.initialize(text);
//....code
};
var p = ToggleButton.prototype = new createjs.Container();
p.Container_initialize = p.initialize;
p.initialize = function(text) {
this.Container_initialize();
};
window.ToggleButton = ToggleButton;
}());