Вызывать определенную функцию javascript, когда в памяти используется одна и та же функция имени
Мне нужно вызвать определенную функцию js. Проблема заключается в том, что во время выполнения может возникнуть ситуация, когда другой файл js может содержать одну и ту же функцию имени. Но я должен быть конкретным, какую функцию я должен назвать.
Перегрузка функции не является моим решением.
Спасибо и приветствую,
Tanmay
Ответы
Ответ 1
вам придется выполнить некоторую реорганизацию ваших ресурсов и использовать пространство имен, где вы можете.
если у вас есть метод с именем saySomething
, определенный дважды, вы должны перенести один из них на объект (в зависимости от ваших потребностей).
var myNS = new (function() {
this.saySomething = function() {
alert('hello!');
};
})();
а другая ошибка может быть перенесена в другой объект или даже оставлена одна.
function saySomething() {
alert('derp!');
}
теперь вы можете вызвать метод saySomething
, например
saySomething(); // derp!
myNS.saySomething(); // hello!
edit: поскольку он был взят в комментариях, этот
var myNS = {
saySomething: function() {
alert('hello!');
}
};
эквивалентен первому блоку кода в более простой форме (если я правильно помню).
Ответ 2
По крайней мере, в firefox, когда у вас есть две функции с тем же именем, вторая перезапишет первый.
Итак, вы не можете вызвать первый.
Попробуйте:
function a() {alert(1);}
function a() {alert(2);}
a(); // alerts '2'
Смотрите jsfiddle.
Ответ 3
В javascript аналогично названные функции автоматически переопределяют предыдущую функцию, определенную с тем же именем.
Скажем, ваша страница включает в себя 1.js и 2.js, и обе они определяют одну и ту же функцию, например say, display(). В этом случае, в зависимости от того, какой js файл включен последним, определение "display()" в этом файле переопределит все другие предыдущие определения.
Ответ 4
Я использую область функций для ограничения объема переменных и функций
Вот пример:
// 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
Я надеюсь, что это поможет
:)