代码之家  ›  专栏  ›  技术社区  ›  carnz

javascript代理模式问题

  •  1
  • carnz  · 技术社区  · 15 年前

    我有这样的东西:

    // original function
    Foo = function(params) {
      do foo...
    }
    Foo.prototype.alert = function() {
      alert('foo');
    }
    

    现在我想干涉一下:

    Bar = Foo;
    Foo = function(params) {
      do bar...
      return Foo(params);
    }
    

    或者jquery方式:

    (function() {
      var proxied = Foo;
      Foo = function() {
        do bar...
        return proxied.apply(this, arguments);
      };
    })(); 
    

    现在的问题是foo缺少所有的原型方法。你知道我该怎么做吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   James    15 年前
    jQuery.extend(Foo.prototype, proxied.prototype);
    

    甚至:

    Foo.prototype = proxied.prototype;