编写高质量代码(5)
来源:互联网 发布:行知社会实践园游后感 编辑:程序博客网 时间:2024/05/12 00:54
这篇笔记正式进入javascript,先总结下,看了这本书对javascript的理解,感觉我对javascript的理解更上了一层楼,不止是技术上,更多的在技巧上,我发现我对javascript的封装理解还是有一些问题,在这方面这本书教了很多,所以强烈推荐读到我文章的人,可以自己看一下这本书《编写高质量代码-Web前端开发修炼之道》,并不是搞推销,这也是我博客里至今唯一推荐的一本书,真的好看
如果是一个团队一起编写javascript,最容易出现的问题大家肯定知道,便是全局变量容易造成问题,每个人写自己的全局变量导致全局变量造成程序错误,如何避免的,使用匿名函数,更准确的说是私有作用域
(function(){ //这里就是私有作用域})()
用这种方法让变量的作用域控制在匿名函数中,轻松全局变量的问题,但是这种方法也阻隔了函数之间的通信,怎么解决呢,这样我们还是需要全局变量来通信,但这样违背了我们使用私有作用域的初衷,如何做呢?用hash对象作为全局变量
var Global={} //设置一个对象
这样我们如果某个匿名函数需要一个全局变量我们只需要写成
Global.str//这样我们就定义了一个全局变量str
但仅仅这样还是存在一些小问题,什么呢,这样不能保证一对一的通信,不影响其他函数,比如我们有3个函数,其中都有str,而我只想其中两个通信,正好概面了str的值,这样另一个函数也受到了影响,这种错误如何避免呢,我们可以在上面的代码上再加上自己独特的标签,例如
Global.A={}//在私有作用域在创建一个对象Global.A.str//这样我们就不会出现上面的错误了
不过如果同一个函数非常复杂,我们可能需要很多命名空间,怎么办呢,这时候我们就需要封装命名空间函数了
var Global={}; Global.namespace=function(str){ var arr=str.split("."); var o=Global; for(i=(arr[0]=="Global")?1:0;i<arr.length;i++){//这本书这里写错了,害得我好苦,我改了过来 o[arr[i]]=o[arr[i]]||{}; o=o[arr[i]]; } } //调用 Global.namespace("A.CAT.D"); Global.A.str="wangyue"; a=Global.A.str;
0 0
- 编写高质量代码(5)
- 编写高质量代码
- 编写高质量代码
- 编写高质量C#代码(5)
- 编写高质量的代码
- 编写高质量oc代码
- 《编写高质量代码》读书笔记
- 编写高质量代码基础
- 编写高质量的代码
- 编写高质量iOS代码
- 编写高质量JavaScript代码
- 编写高质量代码(4)
- 编写高质量代码(6)
- 编写高质量代码(7)
- 编写高质量代码规范
- 如何编写高质量代码
- 浅谈高质量代码编写
- 编写高质量前端代码
- 给研发培训资料两篇(架构设计&大数据)
- clojure复习
- 热心同学欢迎指正
- 配置文件 bashrc与profile的区别
- 《Effective C++》学习笔记——条款34
- 编写高质量代码(5)
- reduce里的一个坑
- 修改Android Studio的字体
- linux下出现ping:unknown host www.baidu.com问题时的解决办法——ubuntu下局域网络的配置
- 1047. Student List for Course (25)
- 重建二叉树
- Liferay:JSP中可直接引用的Liferay对象
- Letter Combinations of a Phone Number
- uva227 - Puzzle