如何覆盖封装函数(jQuery)

时间:2015-03-02 15:48:55

标签: jquery function-overriding

嗨我有基于jQuery的核心代码,我无法触及。它包含一个函数,例如:

Library.Plugin.init = function (param1, param2) {
    function doSomething(paramA, paramB, paramC) {
    }
};

图书馆&插件只是对象容器。

我希望更改doSomething()函数的某些部分,同时保持其他部分正常工作。 (我认为它被称为重写)

我怎么能实现呢?

提前谢谢

1 个答案:

答案 0 :(得分:0)

您无法更改doSomething 本身,但您可以通过在内部安排分支来控制其行为。

例如,一个开关/案例结构取决于函数的一个(或多个)参数:

function doSomething(a, b, c) {
    switch (a) {
        case 0:
          ...
        break;
        case 1:
          ...
        break;
        case 2:
          ...
        break;
        default:
          ...
    }
}

因此,doSomething将完全由Library.Plugin.init控制。

你可以类似地分支一些外部对象的状态:

function doSomething(a, b, c) {
    switch (outerObject.state) {
        case 0:
          ...
        break;
        case 1:
          ...
        break;
        case 2:
          ...
        break;
        default:
          ...
    }
}

此处doSomething将由Library.Plugin.init确定正式的婴儿车a, b, c,但也受其他任何代码有权更改outerObject.state的控制。< / p>

这些只是一些例子。各种可能性是无穷无尽的。你主要受限于你的想象力。