0

该网站用于onLoad加载JavaScript文件 ( .js)。我想使用 JavaScript 更改该 js 文件中的一个函数。

该函数被称为 " Hello13" 并且是许多其他函数(hello5hello6等。)

Hello13函数看起来像这样:

function hello13(x, y, z) {
    if (x == null) {
        //something, something.
    }
    if (y == null) {
        //something else, something else.
    }
    if (z == null) {
        //something diffrent, something diffrent.
    }
}

正如你所看到的,当函数被调用时,它被赋予了一些值(x, y, z)。

我想将 z “硬编码”为我自己的值(在 js 文件中)。

所以在我以编程方式更改它之后它会是这样的:

function hello13(x, y, z) {
    z = MyValueOverride.
.....

如何在 js 文件中添加我自己的“ z”值,在网站加载后,使用 JavaScript?

4

3 回答 3

4

如果它是通过内联脚本标记(本地定义或在外部 JS 文件中)加载的某些 javascript 中的全局定义函数,您可以使用您自己的该函数版本重新定义它。最后出现的定义将是活动的。

所以,听起来你想要做的是在包含目标函数的外部 JS 文件之后提供你自己的定义。这样,您的定义将替换原始定义。如果你想保留原来的,你可以在替换它之前将它分配给另一个变量名。

// save original function reference (if desired)
var originHello13 = hello13;

// now define the new function which will replace the previous definition
function hello13(x, y, z) {
    z = MyValueOveride...
}

如果外部 javascript 文件是动态加载的,那么事情会稍微复杂一些,因为您需要弄清楚如何知道动态加载的外部 JS 文件何时被加载,以便您可以定义您的覆盖。您必须向我们展示更多有关如何加载外部 JS 文件的信息,以便我们提供有关如何执行此操作的详细信息。

于 2013-01-27T00:51:59.717 回答
4

重新定义它。如果要使用原始函数中的逻辑,请存储对原始函数的引用,然后重新定义它并从新函数中调用原始函数:

var originalHello13 = hello13;
hello13 = function( x, y, z ){
    z = MyValueOverride.
    return originalHello13( x, y, z );
}
于 2013-01-27T00:53:08.640 回答
0

创建一个重新定义函数的闭包,然后在调用新函数时调用旧函数:

hello13 = (function () {
    // Keep a reference to the old function
    var _hello13 = hello13;

    // return a new function, which will be stored in hello13
    return function (x, y, z) {
        z = MyValueOverride;
        return _hello13(x, y, z);
    };
}());

这是小提琴:http: //jsfiddle.net/hKavH/

于 2013-01-27T00:52:39.277 回答