2012-02-10 97 views
3

我有一个函数onChangeBrand()A.jsB.js有一个相同的名称。如何调用一个javaScript函数

那么如何避免这种情况呢?有一个约束 - 我不能更改函数名称。 并且我不允许编辑两个Js文件,所以命名空间对我来说不是一个正确的想法。

我们可以称之为像A.onChangeBrand()B.onChangeBrand()

+0

你能够把你的js代码放在页面之间'脚本'标签加载这些文件? – Cheery 2012-02-10 07:16:38

+0

是@Cherry我以他们在我的SRC – BOSS 2012-02-10 07:18:37

+0

我的绰号是略有不同。第二个问题 - 这些函数是否有来自这些文件的调用,或者只有您使用它们? – Cheery 2012-02-10 07:20:18

回答

1

好吧,如果命名空间是不适合你,你可以把你的代码在script标签之间加载这些文件

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

a_onChangeBrand()后会调用由从B a.js和onChangeBrand()函数.js文件

但什么都不会帮助你,如果这些a.js和b.js一些功能也使用这些功能 - 它们可能从最后一个加载的文件中调用函数。

+0

这是一些开箱即用的想法。谢谢@Cheery – BOSS 2012-02-10 07:55:37

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(); 
相关问题