如何调用JavaScript函数

3
我有一个函数 onChangeBrand() 在文件 A.js 中,同时在文件 B.js 中也有相同的函数名。
如何避免这种情况?有一个限制 - 我不能更改函数名。而且我不能编辑 Js 文件,因此命名空间对我来说不是一个好主意。
我们能否像这样调用 A.onChangeBrand()B.onChangeBrand()

你能否将你的JS代码放在页面上,位于加载这些文件的script标签之间? - Cheery
是的,@Cherry,我正在将它们放在我的src目录下。 - BOSS
我的昵称有点不同。第二个问题是,这些函数是否从那些文件中调用,还是只有你在使用它们? - Cheery
这与Java无关。请阅读帖子所应用标签的描述。 - Andrew Thompson
@Cheery,这些是一些API的一部分。所以除了我之外,其他人也在使用它们。 - BOSS
@AbhisekBose 我的意思是另外一件事情。请在我的回答中阅读。 - Cheery
4个回答

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 的函数和来自 b.js 的 onChangeBrand() 函数。

但是,如果这些 a.js 和 b.js 中的某些函数也使用了这些函数,则没有任何帮助 - 它们可能会调用最后加载的文件中的函数。


这是一个独具匠心的想法。感谢@Cheery。 - BOSS

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();

1

0

你可以对其中一个函数执行此操作。

var myNS = new (function() {

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

})();

然后调用myNS.onChangeBrand();

同样地,对于其他函数使用myNS2。这些被称为命名空间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接