开发者

call a specific javascript function when multiple same name function are in memory

I need to call specific js function. The problem is many time runtime situation can come where another js file may contain same name function. But i need to be specific that whic开发者_开发知识库h function i am suppose to call. Function overloading is not my solution.

Thanks and regards, Tanmay


you're going to have to do some reorganization of your resources and use namespacing where you can.

if you have a method named saySomething defined twice, you would move one of them to an object (whichever suits your needs better).

var myNS = new (function() {

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

})();

and the other defintion can be moved into a different object or even left alone.

function saySomething() {
    alert('derp!');
}

you can now call the saySomething method like

saySomething();      // derp!
myNS.saySomething(); // hello!

edit: since it was brought up in comments, this

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

is equivalent to the first code block, in simpler form (if i'm remembering correctly).


At least in firefox, when you have two functions with the same name, the second will overwrite the first one.

So, you can't call the first one.

Try it:

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

See in jsfiddle.


In javascript, similarly named functions automatically override previous function defined with the exact same name.

Let's say your page includes 1.js and 2.js and both of them define the same function, for example say, display(). In this case, based on which js file is included the last, the definition of 'display()' in that file will override all other prior definitions.


I use function scope to limit the scope of variables and functions

Here is an example:

// 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

I hope that helps :)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜