这段代码不起作用,因为我似乎宣布了一个带有属性的对象。如何让它工作并引用我传递的字符串/对象的回调?
var HttpDispatcher = function() {
this.listeners = { get: [ ], post: [ ] };
}
HttpDispatcher.prototype.on = function(method, url, cb) {
this.listeners[method].push({
cb: cb,
url: url
});
}
var obj = new HttpDispatcher();
obj.on("get", "page1", function() {document.write("hello");});
document.write(obj.listeners["get"]["page1"]()); // won't work for "page1"
答案 0 :(得分:3)
也许你的意思是这样做:
HttpDispatcher.prototype.on = function(method, url, cb) {
this.listeners[method][url]=cb;
}
这将允许您像以前一样调用它:
document.write(obj.listeners["get"]["page1"]());
您当前的代码正在将一个元素推入一个数组,该元素包含一个同时包含回调和url的对象。