javascript + jquery monkeypatching / replace / override一个类方法

时间:2012-08-13 18:13:33

标签: javascript jquery override monkeypatching

$.fn.uWorklet = function() {
  var worklet = this;
  var plugin = {
    pushContent: function(target, data) {
    . . .
    }
  }
  return plugin;
}

在上面,我想用自己的方法替换方法pushContent。这可能吗,如果可以,怎么做?

2 个答案:

答案 0 :(得分:1)

你想搞乱私人范围吗?有办法做到这一点,但是,不要告诉任何人你从我这里学到了这些:

> var foo = function() { var x = 1; return x; };
undefined
> foo()
1
> foo = new Function(foo.toString().replace(/^function\s()[^{]+{|}$/gi, '') \
       .replace(/var x = 1/, 'var x = 2'))
function anonymous() {
  var x = 2; return x; 
}
> foo()
2

开玩笑说,必须有一个更好的解决方案来解决你的问题:如果这是你的代码,那么使它更模块化,如果它是一个库,那么分叉代码&解决它。

答案 1 :(得分:0)

您不能只替换整个uWorklet方法吗?如果你有代码,你可以复制它,替换pushContent方法并替换整个代码。

否则,我认为你不能,至少不是你到目前为止所展示的代码。也许添加一些如何使用uWorklet方法的例子,因为它看起来像是返回一个对象,也许你可以替换该对象中的方法....