Javascript代理模式问题

标签 javascript jquery

我有这样的东西:

// 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 缺少它所有的原型(prototype)方法。知道我如何才能完成这项工作吗?

最佳答案

jQuery.extend(Foo.prototype, proxied.prototype);

甚至:

Foo.prototype = proxied.prototype;

关于Javascript代理模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136916/

相关文章:

jquery - checkboxes and radio buttons 图片

javascript - 通过单击替换 Bootstrap 模态的主体

javascript - 从 JSON 中获取元素属性名称

javascript - 在 react 中渲染多个不同类型的 child

javascript - 在 coffeescript 中编写 jquery 插件 - 如何获取 "(function($)"和 "(jQuery)"?

javascript - 如何淡化我的背景而不是文本?

javascript - 为什么 window.requestFileSystemSync 未定义?

javascript - Sequelize 模型自定义方法返回未定义

javascript - 如何使用@angular/cli(angular-cli、ng cli)定义webpack入口文件?

javascript - turn.js 翻页时添加声音