繁体   English   中英

如何在Javascript中覆盖此功能

[英]How to override this function in Javascript

我遇到以下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()方法必须在某处定义,对吧? 如果定义了它,我可以覆盖它。

将函数分配给变量以创建局部范围的函数,这些函数在其自身的函数范围内的行为相同。

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

您不能覆盖另一个作用域中的函数。 这就是为什么作用域函数被作用域。 它将保留对其局部范围变量的引用。 这就是为什么通常使用范围的原因,因此您可以封装和保护代码,以确保代码按预期运行。

除非它是一个公开的方法,否则您不能覆盖它。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM