0

在 javscript 中,我们可以做到这一点

var text = "the original text";

text+=";Add this on";

如果一个库已经定义了一个函数(例如)

//In the js library
library.somefunction = function() {...};

有没有办法添加一些东西以便我可以运行两个功能?

var myfunction = function() {...};

就像是:

library.somefunction += myfunction

所以两者myfunction()和原始library.somefunction()都运行?

4

2 回答 2

1

您可以使用这种代码(将范围留空以使用默认范围):

var createSequence = function(originalFn, newFn, scope) {
    if (!newFn) {
        return originalFn;
    }
    else {
        return function() {
            var result = originalFn.apply(scope || this, arguments);
            newFn.apply(scope || this, arguments);
            return result;
        };
    }
}

然后:

var sequence = createSequence(library.somefunction, myFunction);
于 2013-05-07T08:20:24.807 回答
0

我认为你想要创建的是一个Hook(函数) - 你想要调用library.somefunction但添加一些你自己的代码来运行之前。如果是这种情况,您可以myfunction在完成代码后调用或返回库函数。

var myfunction = function() {

    // your code
    // ...

    return library.somefunction();
}
于 2013-05-07T08:30:33.533 回答