一:认识javascript

1、什么是javascript

JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有相对安全性的客户端脚本语言。

是一种动态、弱类型、基于原型的语言,内置支持类。

2、javascript的特点:

(1).一种解释性执行的脚本语言。

(2).一种基于对象的脚本语言。

(3).一种简单的弱类型语言。

(4).一种相对安全脚本语言

(5).一种事件驱动脚本语言。

(6).一种跨平台性脚本语言。

参考自:http://www.cnblogs.com/SanMaoSpace/archive/2013/06/14/3136774.html

 

 

二:javascript发展史

1、javascript 的诞生:

       1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。比如,如果网页上有一栏"用户名"要求填写,浏览器就无法判断访问者是否真的填写了,只有让服务器端判断。如果没有填写,服务器端就返回错误,要求用户重新填写,这太浪费时间和服务器资源了。

       因此,网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。工程师Brendan Eich负责开发这种新语言。他觉得,没必要设计得很复杂,这种语言只要能够完成一些简单操作就够了,比如判断用户有没有填写表单。

       1994年正是面向对象编程(object-oriented programming)最兴盛的时期,C++是当时最流行的语言,而Java语言的1.0版即将于第二年推出,Sun公司正在大肆造势。

       Brendan Eich无疑受到了影响,Javascript里面所有的数据类型都是对象(object),这一点与Java非常相似。但是,他随即就遇到了一个难题,到底要不要设计"继承"机制呢?

2、Brendan Eich的选择

如果真的是一种简易的脚本语言,其实不需要有"继承"机制。但是,Javascript里面都是对象,必须有一种机制,将所有对象联系起来。所以,Brendan Eich最后还是设计了"继承"。

但是,他不打算引入"类"(class)的概念,因为一旦有了"类",Javascript就是一种完整的面向对象编程语言了,这好像有点太正式了,而且增加了初学者的入门难度。

参考自: http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html

三:javascript 和 java

  • javasrcipt是属于网景公司的产品,java是sun公司的产品
  • javasrcipt是基于对象的语言,java是面向对象的语言
  • javasrcipt是解释型语言,java是解释、编译型语言
  • javascript是弱类型语言,java是强类型语言

 

四:读者感想

80年代中期到90年代,是面向对象语言走向繁荣的阶段。
浏览器时代从1991 开始, 1992,1993 为浏览器壮大史。
网景前身在1993发布: Mosaic 浏览器, 1994年4月4日,成立Mosaic公司,1994年10月13日发布Mosaic Netscape 0.9。
1994年12月15日,网景浏览器1.0正式版发布,javascript时代来临。
1994年,面向对象的基本概念已经出现了,oop趋势渐渐的走向统一。

站在Brendan Eich的角度,此时的javascript仅仅只是需要完成浏览器与用户之间完美的互交体验,动画效果以及帮服务器处理一些表单验证的功能。

根据Brendan Eich的需求,根本就不需要将javascript这门语言搞的有多么复杂,但是由于面向对象的崛起这不得不让Brendan Eich考虑js扩展以及维护。

因此Brendan Eich设计javascript时,首先需要保持js的灵活性,其次引入一些新潮的设计理念,但仅仅只是稍微沾点边,进行横向扩展,如果js有一天真正需要完全的oop以及复杂的数据类型时,再进行精雕细琢。

 

五:javascript的精雕细琢(瓶子里的魔鬼)

为解决js文件之间的 命名冲突。
1、2002 年,提出"命名空间模式";变量统一添加 myApp_ 前缀,譬如 myApp_address,myApp_validateUser() 等等。
2、2004 年,Martin Fowler 提出了依赖注入的概念,其主要用于 Java 中的组件内通信。
3、2009 年,Misko Hevery设计了 风骚一时的Angular 框架;将 “依赖注入” 作为其组件间通信的核心机制。
4、2009 年,Mozilla 的雇员 Kevin Dangoor发表了博客讨论服务端 JavaScript 代码,最终形成了 ServerJS 规范,一年之后重命名为 CommonJS;Node.js就是CommonJS标准实现规范。

5、2009 年,Mozilla 的另一位雇员James Burke,在 Dojo 1.7 版本引入了异步模块机制,提出异步加载以及预加载等机制 -- AMD , 并在 2009 年开发了 require.js 框架.
由于AMD和CommonJS两者互不兼容,2011 年中,为弥合不兼容性,重新整合AMD于是诞生了 UMD模式 。

6、2010 年,在 Dave Herman 主导出现 ES2015 Modules模块规范, 从而使得javascript 越来越逼近后台语言, ES2015 Modules 中主要的关键字就是 import 与 export,前者负责导入模块而后者负责导出模块。

参考自: https://zhuanlan.zhihu.com/p/26231889

感想: 随着技术的不断发展变态的需求越来越多,javascript 可能也会渐渐的靠近后台语言成为强类型语言吧。

当javascript 的创始人的面对现在的js 他是会欣慰还是很淡然呢 ?不过很感激 Brendan Eich 最初的设计理念:一切从简;

也因为如此所以我们对于用哪种 js 的类型才有得选。

 

六:下期探讨

1、CommonJS 、ES2015 Modules、AMD 诞生于什么情景, 又是何原因让大神们不得不去对js进行扩展?

2、前端发展如此迅速,技术革命更新的如此之快,除了前端的盛行,迫使js不断成长的因素又是什么?

参考:
http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html
https://zhuanlan.zhihu.com/p/26231889
http://www.cnblogs.com/ghost-xyx/p/4035615.html
http://www.cnblogs.com/SanMaoSpace/archive/2013/06/14/3136774.html
http://blog.csdn.net/u011032438/article/details/29434363