当内存中有多个同名函数时,调用特定的javascript函数

当内存中有多个同名函数时,调用特定的javascript函数,javascript,Javascript,我需要调用特定的js函数。问题是,很多时候运行时可能出现另一个js文件可能包含相同名称的函数的情况。但是我需要明确我应该调用哪个函数。 函数重载不是我的解决方案 感谢和问候, 至少在firefox中,当您有两个同名函数时,第二个函数将覆盖第一个函数 所以,你不能给第一个打电话 试试看: function a() {alert(1);} function a() {alert(2);} a(); // alerts '2' 请参见。在javascript中,类似名称的函数会自动覆盖以前使用完全相

我需要调用特定的js函数。问题是,很多时候运行时可能出现另一个js文件可能包含相同名称的函数的情况。但是我需要明确我应该调用哪个函数。 函数重载不是我的解决方案

感谢和问候,
至少在firefox中,当您有两个同名函数时,第二个函数将覆盖第一个函数

所以,你不能给第一个打电话

试试看:

function a() {alert(1);}
function a() {alert(2);}
a(); // alerts '2'

请参见。

在javascript中,类似名称的函数会自动覆盖以前使用完全相同的名称定义的函数


假设您的页面包含1.js和2.js,它们都定义了相同的函数,例如display()。在这种情况下,根据最后包含的js文件,该文件中“display()”的定义将覆盖所有其他先前的定义。

您必须对资源进行一些重组,并尽可能使用名称空间

如果有一个名为
saySomething
的方法定义了两次,则可以将其中一个方法移动到对象(以更适合您的需要为准)

另一个定义可以移动到另一个对象中,甚至可以单独使用

function saySomething() {
    alert('derp!');
}
现在可以调用
saySomething
方法,如

saySomething();      // derp!
myNS.saySomething(); // hello!
编辑:由于它是在评论中提出的,因此

var myNS = {
    saySomething: function() {
        alert('hello!');
    }
};

相当于第一个代码块,形式更简单(如果我没记错的话)。

我使用函数范围来限制变量和函数的范围

以下是一个例子:

// existing function in JavaScript
function one() {

 console.log('one');   
}

one(); // outputs one

// inserting new JavaScript
(function() { // anonymous function wrapper
'use strict'; // ECMAScript-5

   function one() {

     console.log('two');   
   } 


   one(); // outputs two

})(); // end of anonymous function

one(); // outputs one
我希望这有帮助
:)

可能重复[在不同的.js文件中使用两个同名方法]()您所说的“函数重载”是什么意思?功能克隆?不仅在Firefox中;在每个浏览器的每个Javascript引擎中。你甚至不能有条件地这样做,因为结果是不可预测的。例如,请参阅:在多个浏览器中(至少在Chrome和Opera中),第一个函数声明总是被第二个函数覆盖,而不管条件如何。有没有办法让第二个函数调用第一个函数?此模式在Firefox v.83中出现错误:
未捕获语法错误:函数a的重新声明
。但是如果你把这两个函数声明放在不同的脚本中,那么它似乎是有效的。答案很好,但是你为什么不使用呢?@marcelkorpel。通常,当我创建一个对象时,会有一些“私有”变量,这些变量在文字符号中是不可用的(或者我不知道如何使用它们)。特别是对于新手来说,使用自动执行匿名函数创建为单例的
对象可能会让人不知所措,尤其令人困惑。此外,这回答了这个问题,但它提供了比OP所要求的更多的信息。因此+1用于提供正确答案,-1用于提供过于冗长的答案(尽管我必须承认,学习良好实践永远不会太早)。这解决了我的问题,即我的.js文件是通过“include”语句插入的,因此函数名无法更改。
// existing function in JavaScript
function one() {

 console.log('one');   
}

one(); // outputs one

// inserting new JavaScript
(function() { // anonymous function wrapper
'use strict'; // ECMAScript-5

   function one() {

     console.log('two');   
   } 


   one(); // outputs two

})(); // end of anonymous function

one(); // outputs one