Javascript代理模式的问题

时间:2011-11-20 20:58:07

标签: javascript

您想创建一个函数,它接受一个参数(一个函数)并代理函数:

function proxyFunc(func) {
  console.log("Proxying ", func.name);
  var proxied = func;
  func = function() {
   console.log("Calling proxied ", func.name);
   return proxied.apply(this, arguments);
  };
}

不幸的是,代理不起作用。我已经发现将代理函数分配给原始函数是个问题,但我不知道如何使其工作:

func = function() { ... }

1 个答案:

答案 0 :(得分:4)

你在找这个吗?

function proxyFunc(original) {
    console.log("Proxying ", original.name);
    return function() {
       console.log("Calling proxied " + original.name);
       return original.apply(this, arguments);
    };
}

对于你正在做的事情,这将有所帮助:

function proxyMember(obj, member) {
    var original = obj[member];
    console.log("Proxying ", member);
    obj[member] = function() {
       console.log("Calling proxied " + member);
       return original.apply(this, arguments);
    };
}

proxyMember(obj, "foo");