Javascript - 如何从字符串/对象引用回调

时间:2015-03-24 18:57:06

标签: javascript

这段代码不起作用,因为我似乎宣布了一个带有属性的对象。如何让它工作并引用我传递的字符串/对象的回调?

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"

1 个答案:

答案 0 :(得分:3)

也许你的意思是这样做:

HttpDispatcher.prototype.on = function(method, url, cb) {

  this.listeners[method][url]=cb;
}

这将允许您像以前一样调用它:

document.write(obj.listeners["get"]["page1"]());

您当前的代码正在将一个元素推入一个数组,该元素包含一个同时包含回调和url的对象。