目前我正试图在javascript中编写一个resourcemanager。它有两种方法,一种是向管理器添加图像资源,另一种是在添加图像后预加载所有图像:
ResourceManager = function(){};
ResourceManager.prototype = function(){
var imageList = new Array(),
addImage = function(imageUrl){
imageList.push(imageUrl);
},
loadImages = function(){
//Do stuff for loading here
onComplete();
},
onComplete = function(){
alert('finished');
};
return {
addImage: addImage,
loadImages: loadImages,
onComplete: onComplete
}
}();
然后我想将它用作以下
var rsmgr = new ResourceManager();
rsmgr.onComplete = function(){
alert('completed');
};
rsmgr.addImage('image.png');
rsmgr.loadImages();
您可以看到一个有效的示例on jsfiddle
现在这个overoad没有用,为什么会这样呢?我猜测它与原型设计有关,但我似乎无法掌握如何解决这个问题。
答案 0 :(得分:0)
我不是原型设计方面的专家,所以不能给出有效的答案,为什么它不起作用,但是我可以建议使用“纯函数”方法的替代方法,这种方法很好:
function ResourceManager() {
this.imageList = new Array();
this.addImage = function(imageUrl) {
this.imageList.push(imageUrl);
};
this.loadImages = function() {
//Do stuff for loading here
this.onComplete();
};
this.onComplete = function() {
alert('finished');
};
};
如上所述,您的原始覆盖代码可以正常工作 - updated fiddle
(如果删除rsmgr.onComplete
覆盖,您将按预期“完成”