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

Tan*_*may 12 javascript

我需要调用特定的js函数.问题是很多时候运行时情况可能会出现另一个js文件可能包含相同名称的功能.但我需要具体说明我打算调用哪个函数.函数重载不是我的解决方案.

谢谢和问候,Tanmay

lin*_*lnk 10

您将不得不重新组织资源并尽可能使用命名空间.

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

var myNS = new (function() {

    this.saySomething = function() {
        alert('hello!');
    };

})();
Run Code Online (Sandbox Code Playgroud)

另一种定义可以移动到另一个对象中,甚至可以单独留下.

function saySomething() {
    alert('derp!');
}
Run Code Online (Sandbox Code Playgroud)

你现在可以调用saySomething方法了

saySomething();      // derp!
myNS.saySomething(); // hello!
Run Code Online (Sandbox Code Playgroud)

编辑:因为它是在评论中提出的,这个

var myNS = {
    saySomething: function() {
        alert('hello!');
    }
};
Run Code Online (Sandbox Code Playgroud)

相当于第一个代码块,更简单的形式(如果我正确记住).


Top*_*era 3

至少在 Firefox 中,当你有两个同名的函数时,第二个函数会覆盖第一个函数。

所以,你不能调用第一个。

尝试一下:

function a() {alert(1);}
function a() {alert(2);}
a(); // alerts '2'
Run Code Online (Sandbox Code Playgroud)

请参阅jsfiddle