js使用闭包封装好工具
有使用我们引入的js文件中的东西非常非常多,js一旦变量名反复就会笼罩。为了解决这一问题,我们使用东西封装。
我们引入的js工具(代码)不会笼罩我们本身写的东西。这是因为它使用了封装与闭包。
就仿佛java中引入的工具,虽然要领名和我们本身写的要领名反复,但并不会笼罩,因为我们在使用引入的要领时,凡是在前面类名点要领名的形式。
js也一样。js使用闭包封装好工具,只返回一个函数名,我们使用函数名.东西的方法挪用供给的要领即可。
闭包
简单的理解为:函数里面有函数,返回函数中的函数东西。
如:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> function getKnife(){ var knife={} knife.kan = function(){ alert("我砍") } knife.ci = function(){ alert("我刺!") } return knife } </script> <input type="button" value="砍它"/> <input type="button" value="刺它"/> </body> </html>
好了其它代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <!-- 声明js代码域 --> <script type="text/javascript"> function test(){ alert("我是test") } </script> <script type="text/javascript" src="http://www.mamicode.com/my.js"> </script> </head> <body> <h3>jQUery的封装道理</h3> <hr> <input type="button" value="测试test"> <ul> <li>1.js的全局代码区只有一个:无论是引入的还是html中写的多个js代码块,城市合成一个js文件到内存中</li> <li>所以同名变量(函数等)会笼罩。</li> <li><input type="button" value="测试"> 2.使用东西封装,将代码封装到东西中(检察my.js文件中东西:xiaohei),但东西也可以被笼罩,内容全部掉效。为了解决这个问题,检察3</li> <li><input type="button" value="测试"> 3.使用工厂模式,,将需要用的对象写到一个函数中(检察my.js文件。但问题并没有完全解决)</li> <li> 4.将封装的函数名去除,引出新问题: 函数没有步伐挪用,解决要领看5 </li> <li>5.使用匿名自挪用,可以再页面加载的时候挪用一次,但不能反复挪用,解决要领看6</li> <li><input type="button" value="测试"> 6.使用闭包</li> </ul> </body> </html>
my.js
//声明东西 var xiaohei={} xiaohei.test = function(){ alert("我是外部js文件的test函数") } //使用工厂模式 function getXiaohei(){ var xiaohei={} xiaohei.test = function(){ alert("工厂模式的test函数") } return xiaohei; } // 匿名自挪用:只能存在一个匿名自挪用 (function(){ alert("匿名自挪用") return "你好"; })() //使用闭包 // (function(obj){ // obj.test = function(){ // alert("我是闭包创建的test"); // } // } // )(window) //传window东西,当这个匿名函数执行时,window获得一个test东西
24 jQuery——东西的封装、闭包、匿名自挪用函数
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30764.html