Javascript代理模式的问题

Problems with the Javascript proxy pattern

本文关键字:问题 模式 代理 Javascript      更新时间:2023-09-26

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

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() { ... }

你在找这个吗?

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");