js函数命名问题

mirrorspace 2018-03-29 07:29:49

系统中很多html页面都是部分页,它们有各自的js处理函数.
每个页面的这些函数都各不相干.
但是很多函数命名是一样的,另外函数多了,命名也是一个麻烦事.
这些页面都是很ajax载入到同一个文档中的.
所以 无法避免"函数命名重复"的问题...
..
SO
我构思了一个办法,就是每个页面都初始一个相同的变量,然后将这些函数绑定在这变量上.
<script>
$(function(){
var page={};
parg.fun1=function(){}
parg.fun2=function(){}
.......
})
</script>
如此一来,假如有两个页面都使用了fun1和fun2名字的函数,那么也不会冲突了.

只是.这个办法好像觉得有问题啊..
大家 是怎么解决这问题的?
...全文
669 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirrorspace 2018-03-30
  • 打赏
  • 举报
回复
目前正是用你这办法解决的. 不过这样麻烦啊.不是根本解决办法啊
引用 4 楼 usecf 的回复:
你每个文件名不一样吧 你可以加个文件名前缀+函数名 那样也不会冲突
usecf 2018-03-30
  • 打赏
  • 举报
回复
你每个文件名不一样吧 你可以加个文件名前缀+函数名 那样也不会冲突
mirrorspace 2018-03-30
  • 打赏
  • 举报
回复
这怎么调用 name1呢
引用 1 楼 jslang 的回复:
一般都是用立即执行的函数形成闭包。不同闭包内的函数名和变量名不会冲突
a.js
(function () {
	function name1() {
		
	}
	function name2() {
		
	}
})();

b.js
(function () {
	function name1() {
		
	}
	function name2() {
		
	}
})();
幽饮烛 2018-03-30
  • 打赏
  • 举报
回复
可以去学学 AMD 和 CMD。
mirrorspace 2018-03-30
  • 打赏
  • 举报
回复
结账 感谢大神回复
mirrorspace 2018-03-30
  • 打赏
  • 举报
回复
问题解决了.但还是不习惯这种写法,主要是不明白为什么函数定义时就能执行

var jsA = (function (q) {
    function name1() {            }
    function name2() {            }
    q.func = function() {            }
    return q;
})({});
改成习惯的new写法之后,如下

var jsA = new function () {
    function name1() {            }
    function name2() {            }
    var self = this;
    self.func = function() {            }
};
引用 10 楼 jslang 的回复:
你那样,代码执行上没有什么敝端,只是每个函数都要加前缀,代码看起来乱,不同js模块之间复制代码都要修改前缀,不方便。 [/quote]
天际的海浪 2018-03-30
  • 打赏
  • 举报
回复
引用 9 楼 mirror030 的回复:
大神,感谢回复,你的这种是用了"闭包"原理?这一直搞不明白. 我之前用过一个办法.你这种要换作我那写法就是:

<script>
function jsA(){}
jsA.name1 = function(){}
jsA.name2 = function(){}
jsA.func = function(){}
</scritp>
它们有哪些敝端吗
你那样,代码执行上没有什么敝端,只是每个函数都要加前缀,代码看起来乱,不同js模块之间复制代码都要修改前缀,不方便。
mirrorspace 2018-03-30
  • 打赏
  • 举报
回复
大神,感谢回复,你的这种是用了"闭包"原理?这一直搞不明白. 我之前用过一个办法.你这种要换作我那写法就是:

<script>
function jsA(){}
jsA.name1 = function(){}
jsA.name2 = function(){}
jsA.func = function(){}
</scritp>
它们有哪些敝端吗
引用 8 楼 jslang 的回复:
那就设计个对外接口。

<script type="text/javascript">
var jsA = (function (q) {
	function name1() {			}
	function name2() {			}
	q.func = function() {			}
	return q;
})({});
</script>
<a onclick="jsA.func()"></a>
凡是需要外部调用的函数都这个对象中。
天际的海浪 2018-03-30
  • 打赏
  • 举报
回复
引用 7 楼 mirror030 的回复:
哦.只能在里面调用. 我经常要将一些函数直接写在DOM上,比如一个按钮 <a onclick="func(this)"> 但又不希望给这些按钮起ID,这样会麻烦 吧 [quote=引用 6 楼 jslang 的回复:]
那就设计个对外接口。

<script type="text/javascript">
var jsA = (function (q) {
	function name1() {
		
	}
	function name2() {
		
	}
	q.func = function() {
		
	}
	return q;
})({});
</script>
<a onclick="jsA.func()"></a>
凡是需要外部调用的函数都这个对象中。
mirrorspace 2018-03-30
  • 打赏
  • 举报
回复
哦.只能在里面调用. 我经常要将一些函数直接写在DOM上,比如一个按钮 <a onclick="func(this)"> 但又不希望给这些按钮起ID,这样会麻烦 吧 [quote=引用 6 楼 jslang 的回复:]
天际的海浪 2018-03-30
  • 打赏
  • 举报
回复
引用 3 楼 mirror030 的回复:
这怎么调用 name1呢 [quote=引用 1 楼 jslang 的回复:] 一般都是用立即执行的函数形成闭包。不同闭包内的函数名和变量名不会冲突
a.js
(function () {
	function name1() {
		
	}
	function name2() {
		
	}
})();

b.js
(function () {
	function name1() {
		
	}
	function name2() {
		
	}
})();
[/quote]


(function () {
	function name1() {
		
	}
	function name2() {
		
	}
	//当然只能在闭包内调用函数了
	name1();
	//如果是事件调用函数,就要在闭包内绑定事件
	document.getElementById("id").onclick = name2;
})();
天际的海浪 2018-03-29
  • 打赏
  • 举报
回复
一般都是用立即执行的函数形成闭包。不同闭包内的函数名和变量名不会冲突
a.js
(function () {
	function name1() {
		
	}
	function name2() {
		
	}
})();

b.js
(function () {
	function name1() {
		
	}
	function name2() {
		
	}
})();

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧