接着上一篇“Javascript模块化编程之Why”说起,Javascript担子重了之后程序也就复杂了。在大把语言都模块化编程的形势下,Javascript也不可能袖手旁观啊,毕竟这是一条经过实践检验的道路。C++有namespace,Java有包,但Javascript有什么呢?

现在满大街都是Javascript模块化编程相关的文章,一方面说明Javascript的春天到了,另一方面则充分说明Javascript模块化编程不是那么容易的事,不信你看看C++和Java等语言模块化编程的文章就知道了。难道没有namespace和包这些机制就真的这么困难吗?如果仅仅是没有这些,还真没有那么困难。

相信很多人学习编程都是从C语言开始的,但实际工作中,只有少数人使用C语言,更多的是使用C++,Java等面向对象的语言。个人没有对语言做深入的分析,只是实际工作中用面向对象貌似更容易解决复杂问题。相信大家也差不多这样的感觉。在尝到面向对象的甜头后,你会爱上它的。不幸的是Javascript语言同C语言一样,在语言层面上,没有真正的类,要不然也不会出现prototype.js这类基础库了。

没有真正的类意味着什么呢?最直接的就是无法在语言层面控制哪些是私有的,哪些是公有的。对于所有的外部模块而言,都是公有的。因为这个原因你会看到在很多Javascript的代码中,存在许多以"_"开始的变量名,这表示什么意思呢?这是一种命名规范所要求的,私有变量名前面加"_"前缀,这类变量不能被外部模块访问。虽然这种限制不怎么靠谱,但也只能这样了。没有可见性限制,会让模块的独立性遇到很大的挑战。而要处理这些问题,就不那么简单了。

连真正的类都不存在,更不用说其他方面了,更进一步说,模块化编程困难的原因主要归根于Javascript语言的抽象层次太低了,这样必然会导致重复利用率不高。对于模块化编程而言,这自然不是什么好事。虽然面临各种各样的困难,但也难不住高智商的人类啊,办法总是有的。C语言不一样可以玩出面向对象,玩出操作系统嘛!对C语言这方面有兴趣的请前往google,我这暂且只说Javascript,怎么把它玩出对象,玩出模块化呢?

欲知后事如何,请看下次分解!

最新文章

  1. Map工具系列-03-代码生成BySQl工具使用说明
  2. 使用EasyBCD完美实现Windows7与Linux双系统
  3. modelsim10.0C编译ISE14.7的xilinx库(xilinx ip核)
  4. Linux系统搭建LAMP平台
  5. wordpress为dashboard添加样式
  6. Windows Azure Platform 系列文章目录
  7. 结构体page_cur_t
  8. ubuntu 12.04 编译安装 nginx
  9. 解决Silverlight5_tools无法安装问题(试验已成功)
  10. 我为什么放弃了win7系统
  11. MyEclipse快捷键全
  12. C# 常用工具合集
  13. Inno Setup 自定义界面心得
  14. resume
  15. 将excel按照某一列拆分成多个文件(方案整理)
  16. LeetCode题解之Find Bottom Left Tree Value
  17. Composer对于第三方包的自动加载
  18. python, 用filter实现素数
  19. Linux学习笔记09—Sqlyog链接mysql配置
  20. eclipse cdt运行c程序报错“launch failed,binary not found”

热门文章

  1. HTTP的REST服务简介
  2. 4、Cocos2dx 3.0三,找一个小游戏开发Hello World 分析
  3. cocos2d-x注意事项(十)Lua发展飞机战争-4-创建主角
  4. java7 语法糖 之 switch 声明string
  5. JAVA8,SPRING,ANGULARJS对项目
  6. 胖client和瘦client
  7. word 一些有用的技巧
  8. java_Eclipse主题颜色配置+全屏
  9. PHP第六课 使用方法数组
  10. 刚学unity3d,跟着仿作了flappy bird,记下一些琐碎的心得!