一个页面如果引用多个JS,或者像ASP.NET MVC,一个视图包含多个子视图,每个子视图有自己的JS,那么变量、函数的重名冲突机会将会大增。

如何解决?

这里有一个方案:

1、用类来封装子页的JS代码。

<script type="text/javascript">
var globalName = "左直拳";
var A = function(){
var name = "leftfist";
function hi(){//私有函数,外部无法访问
alert(name + " : Hi!");//私有变量,内部可以直接访问
}
this.hiGlobal = function(){
alert(globalName + " : Hello!");//全局变量,内部可以直接访问
}
this.sayHello = function(){//public函数,外部可访问
hi();//私有函数,内部可以直接访问
this.hiGlobal();//公有函数,内部访问也要加上 this.
}
}; var fa = new A();
</script>

<input type="button" id="btnHi" value="sayHi" onclick="fa.sayHello();" />

这种模式中,凡需要被外部访问,如HTML控件访问的,就定义成公有函数,其他的就是类内部的私有函数,冲突的机会将大大降低。

2、还有另外一种方式,就是将变量、函数封装到 JSON 对象里

var G = {
callback : function(){alert("callback!");}
,f1 : function(){
G.callback();
}
}
G.f1();

但是这种方式的话,里面的元素全部都是公有的,外部全都可以访问,固然解决了重名问题,但谈不上有所封装。这种方式,感觉就好像实现了接口的类一样。

并且里面的方法互相访问,同样要加上命名空间,麻烦了点。

版权声明:本文为博主原屙文章,喜欢你就担走。

JS重名解决方案的更多相关文章

  1. 关于js重名方法的先后调用问题

    当js中方法重名时,最后引入的js会覆盖前面的引入的js(就是说会调用最后引入的js中的方法)详情参照(main.js与white.js 的a())但是,当最后一个js中存在语法上的错误时(也可以是本 ...

  2. js重名的处理

    ### 关于重名的处理 > 在变量提升阶段,如果名字重复了,不会重新的进行声明,但是会重新的进行定义(后面赋的值会把前面赋的值给替换掉) ```javascript //=>变量提升:fn ...

  3. js方法入参或局部变量和全局变量重名,用来赋值全局变量会失败

    今天遇到个bug,最后终于知道原因了,js方法入参和全局变量重名,用入参赋值全局变量失败,就是说方法入参不能和全局变量重名. 现在下面的例子也说明,局部变量和全局变量不可以同名不光是入参,只要同名赋值 ...

  4. 在IE中,JS方法名和input的name重名时,调用该方法无效

    在IE中,JS方法名和input的name重名时,调用该方法无效.提示:网页错误详细信息 用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1 ...

  5. javascript js函数重名后面的覆盖前面的

    js 函数重名后面的覆盖前面的   var x = 1;    var y = 0;    var z = 0;    function add(n) { return n = n + 1; }    ...

  6. ie7,ie8 js中变量名和页面元素ID重名,报错

    js变量名和一个div的id重名,报错.不知所以然...做个标记

  7. HTML元素ID和JS方法名重复,JS调用失败

    HTML元素ID和JS方法名重复时,JS中的重名方法无法被找到,不能执行. 修改ID或者方法名,两者不一致即可.

  8. JS---函数名和变量名重名

    继续作用域的问题,今天上午看了一会,下午看又看到了一个类型的题,函数名和变量名相同的问题.之前还不会觉得函数名和变量名重名了会有什么冲突.也是没有去测试过..懒了.直接贴代码: 运行之后大家猜测结果是 ...

  9. 规避Javascript多人开发函数和变量重名问题

    函数和变量重名始终是一个令人头痛的问题,先讲变量吧,相信了解JS的朋友都知道,在JS中 是没有块级作用域的只有函数作用域,也就是说那些以大括号为界定符的代码块是管不住其中定义 的变量的作用域的,举例: ...

随机推荐

  1. 指定PHP编码

    有时候我们写好的PHP页面在网页中打开是乱码的,就需要指定编码,即加入代码: header("content-type:text/html;charset=utf-8"); 位置图 ...

  2. <Redis> 入门六 主从复制方式的集群

    1.集群如何操作 现在有三台虚拟机,ip分别为100,105,106,将100作为master,其他两台作为slave 1.vim redis.conf 以前的版本是 slaveof <mast ...

  3. 微信小程序 video组件 不随页面滚动

    1.页面初始化(滚动前)时,video所在位置 2.页面滚动后,video视频组件所在位置 看了别人家的小程序并不会出现这种状况.最后检查发现,是页面包裹层设置了 height:100% 导致的 顺便 ...

  4. 如果由你来设计 12306.cn,你会怎么设计?

    作者:huangkun链接:https://www.zhihu.com/question/20017917/answer/15272038来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  5. PHP:Mysql 基础类

    文章来源:http://www.cnblogs.com/hello-tl/p/7592547.html <?php /** * __construct($Mysql_config) 构造函数 $ ...

  6. odoo权限配置讲解2

    今天我们在来讲解一下odoo中配合使用公司开发的权限配置模块,简单配置odoo权限的操作说明 接着上篇讲到的,昨天我们只是做了一个简单的表单模型的筛选规则 今天来讲解一下如何在创建内贸报价单的时候,在 ...

  7. SpringMVC Controller的返回类型

    Controller的三种返回类型中 ModelAndView类型 带数据带跳转页面 String 跳转页面不带数据 void 通常是ajax格式请求时使用 1返回ModelAndView contr ...

  8. 绑定IP 绑定设备

    首先引别人的组播测试如下 1. 一个udp client可以同时往多个组播地址发送数据,多个udpclient可以同时往一个组播发数据. 2. 本地udp必须监听组播端口,否则收不到数据.3. 一个u ...

  9. HDU-1272小希的迷宫,并查集?其实不用并查集;

    小希的迷宫                                                                                               ...

  10. java 构造不可变类集的使用方法

    首先用到的就是Collections.unmodifiablexxx(         set.add("hello");         set.add("insert ...