如何在Javascript中覆盖此功能

时间:2017-03-24 17:43:37

标签: javascript function

我有以下Javascript情况:

// First file - the one that I can't edit
(function(){
    "use strict";
    function test() {
        alert("a");
    }
    test();
})();

这是在我无法编辑的Javascript文件中定义的。我将如何重写test()方法?

重新定义该功能并不起作用。输出仍然是" a"。

// My file - trying to override the first file's test() function
(function(){
    function test() {
        alert("b");
    }
})();

你还有其他建议吗?

在我看来,test()方法必须在某处定义,对吗?如果定义了,我可以覆盖它。

2 个答案:

答案 0 :(得分:0)

将函数分配给变量以创建在其自己的函数范围内行为相同的本地范围函数。

范围变量优先于全局变量。因此,如果您在自己的函数中定义局部变量,那么您将覆盖另一个定义的局部变量。在你正在工作的范围内。在范围之外,全局对象仍然存在。

您无法覆盖其他范围内的功能。这就是范围作用范围的原因。它将保留对其本地范围变量的引用。这就是通常使用范围的原因,因此您可以封装和保护代码,以确保代码保持按预期工作。

除非是公开曝光的方法,否则你无法覆盖它。

(function(){
    var test = function() {
        alert("b");
    }
})();

(function(){
    "use strict";
    function test() {
        console.log("a");
    }
    test();
})();
(function(){
    var test = function() {
        console.log("b");
    }
    test();
})();

答案 1 :(得分:-1)

如果使用XMLHttpRequest或fetch请求文件,则可以编辑文件的文本,然后将编辑的响应文本设置为脚本元素的.textContent,将脚本元素附加到文档。