天天看點

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

繼續閱讀