javascript中提升代碼的封裝性

我出的面試題中,有一條是問如何避免頁面引用JS,出現函數、變量重複、衝突的。javascript

從大的方面講,應該引入javascript的模塊化開發,符合AMD規範之類;html

從小的方面說,大概就是限定變量和函數的做用域了,這也涉及到一點你們如雷貫耳的閉包概念。java

衆所周知,javascript沒有類,只有函數。其實它的函數也跟類差很少了,函數裏面能夠定義函數。而對於.net來講,直到近期出現的C#7,才支持這一點。面試

因此,咱們能夠將函數和變量,都定義在一個函數裏面,這樣即與外部隔絕矣:markdown

<html>
<head></head> <body></body> </html> <script> (function (){ function f1(){}; var v1; .... })(); </script>

在一個頁面中這樣書寫,等價於:閉包

<html>
<head></head>
<body></body>
</html>
<script> function f1(){}; var v1; .... </script>

但封裝性就行了許多,避免出現後者這種平鋪直白,將方法和變量徹底暴露於外界的隱患。而且(function(){})(); 這種方式能夠應用到子函數,乃至推廣到全部的函數,層層封裝,沒有止境。而且有閉包屬性,沒必要擔憂全局的綁定訪問不到裏層的函數:模塊化

(function(){ function f1(){} function f2(){} $("#btn1").click(function(){ f1(); f2(); }); }
相關文章
相關標籤/搜索