2012-02-10 5 views
3

У меня есть функция onChangeBrand() в A.js и есть то же самое имя в B.js.Как вызвать функцию JavaScript

Итак, как избежать этой ситуации? Существует ограничение - я не могу изменить имена функций. , и мне не разрешено редактировать файлы Js, поэтому пространство имен не подходит для меня.

Можно ли назвать что-то вроде A.onChangeBrand() или B.onChangeBrand()?

+0

Можете ли вы поместить свой js-код на страницу между тегами 'script', загружая эти файлы? – Cheery

+0

Да @Черри, я беру их в свой src – BOSS

+0

Мой ник немного отличается. И второй вопрос - выполняют ли эти функции вызовы из этих файлов или только вы их используете? – Cheery

ответ

1

Хорошо, если пространство имен не для вас, и вы можете поместить свой код в период между script метки загрузки этих файлов

<script src='a.js'></script> 
<script> 
var a_onChangeBrand = onChangeBrand; // copy the function 
</script> 
<script src='b.js'></script> 

a_onChangeBrand() после этого будет вызывать функцию из a.js и onChangeBrand() из б .js

Но ничего не поможет, если некоторые функции в этих a.js и b.js также используют эти функции - они могут вызывать функцию из последнего загруженного файла.

+0

Это что-то из коробки. Спасибо @Cheery – BOSS

1

Проверьте, как использовать пространства имен в JavaScript, если вы можете редактировать эти два файла a.js и b.js, тогда вы можете объявить пространства имен. Смотрите лучший ответ здесь: How do I declare a namespace in JavaScript?

0

Вы можете сделать это одному из вашей функции ..

var myNS = new (function() { 

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

})(); 

, а затем вызвать myNS.onChangeBrand();

Аналогично используется myNS2 для другой функции. Они называются пространствами имен.

1

Если у вас нет доступа к источнику, то следующее решение (не хорошенькая, заметьте):

<script src="http://exmpale.com/a.js"></script> 
<script> 
A = { onChangeBrand:onChangeBrand }; 
</script> 

<script src="http://exmpale.com/b.js"></script> 
<script> 
B = { onChangeBrand:onChangeBrand }; 
</script> 

Обе функции теперь пространство имен и может быть вызван следующим образом:

A.onChangeBrand();  
B.onChangeBrand(); 
Смежные вопросы