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(); }); }
相关文章
相关标签/搜索