JS重名解决方案

一个页面如果引用多个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" οnclick="fa.sayHello();" />

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


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

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

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

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

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

转载于:https://www.cnblogs.com/leftfist/p/4764280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值