JavaScript最早由Netscape公司开发

JavaScript的发展历程

我们知道Windows桌面程序是可以交互的,用户可以点击菜单、按钮、下拉列表等控件,并通过消息机制来响应用户操作。 而最早的网页只是静态浏览,为了支持用户交互,浏览器开发商如Netscape和Microsoft相继都开发了自己的脚本语言,可以嵌入网页直接执行。 Netscape管理层希望这个语言像Java,因此取名JavaScript,在其Navigator 2.0浏览器中开始支持。而微软的脚本语言取名JScript,首先内置于IE3.0。 市场上还有一些其他的脚本语言版本。为了统一这些不同的版本,国际标准化组织ECMA对此进行了标准化,也就是ECMAScript,其后得到了行业的广泛支持。

ECMAScript和JavaScript的关系是,前者是语言规范,而后者是一个具体实现。

JavaScript之于Java的语言定位大体上是Java用来开发服务器和组件,而JavaScript保持简单易用来完成客户端功能,就好比微软当时的C++和VBScript的关系一样。

JavaScript虽然由于市场原因取名Java,但其实更像C和Self语言的后代。JavaScript的总体设计思路如下:

  • 类C语言风格的语法
  • 借鉴了Java的垃圾回收机制
  • 类Self语言风格的基于原型(Prototype)的OO(Object-Oriented)模型

JavaScript最初的版本由于设计和实现都很仓促,并非一门严谨的编程语言,有不少漏洞广为诟病。但是最重要的是能工作(it works!),而且由于浏览器的市场竞争和模仿,被快速广泛支持。从而形成了事实上的语言标准。

当然JavaScript本身也随着Web一起演进而变得更为成熟和强大。在客户端领域击败了Java Applet、VBScript乃至其后起之秀Flash的ActionScript,是如今无可置疑的Web客户端第一编程语言,并开始向系统级语言扩展(NodeJS)。

JavaScript语言标准的当前最新版本是ECMAScript6,发展历程大致如下:

  1. 1995: JavaScript出生,小名叫LiveScript。
  2. 1997: ECMAScript标准确立。
  3. 1999: ES3出现,与此同时IE5风靡一时。
  4. 2000–2005: XMLHttpRequest也就是AJAX大获流行,给了JS第2次生命。
  5. 2009: ES5出现,(就是我们大多数人现在使用的)例如forEachObject.keysObject.create 以及JSON标准。
  6. 2015: ES6/ECMAScript2015出现。主要是一些语法糖(好的语法改进),但缺少功能突破。

JavaScript的意外成功让人想起一个道理:聪明不如幸运,勤奋不如眼光。

什么是DOM

JavaScript最主要的操作对象毫无疑问是HTML文档,我们使用面向对象的方法来对文档内容进行抽象和概念化,以便于程序对其进行操作。这样的文档对象模型就是DOM(Document Object Model),本质上是一种应用程序接口(API)。

HTML文档的DOM结构和XML的DOM结构类似,都是一种树形结构。树的根节点就是document,然后有父节点、子节点、祖先、后代、兄弟节点这些关系。

什么是BOM

JavaScript除了要能操作文档,还需要能操作浏览器,比如获取浏览器窗口大小,或者刷新页面。和DOM类似,浏览器也提供了对象模型来支持JS的访问。这个模型就是BOM(Browser Object Model)。

BOM主要包含如下6个对象:

  1. window对象,它是BOM的根对象,其它的BOM对象都是windows对象的属性
  2. document对象表示浏览器中加载页面的文档对象,而这个对象也就是DOM模型的根对象
  3. location对象包含了浏览器当前的URL信息
  4. navigator对象包含了浏览器本身的信息
  5. screen对象包含了客户端屏幕及渲染能力的信息
  6. history对象包含了浏览器访问网页的历史信息。

JavaScript只有通过调用BOM/DOM API才能赋予网页文档动态交互特性,才能真正使得HTML变成动态的HTML。

参考自:http://techbrood.com/h5b2a?p=why-js-exists

[JavaScript]JS由来的更多相关文章

  1. Seajs是什么及sea.js 由来,特点以及优势

    Seajs是什么及sea.js 由来,特点以及优势 这篇文章主要介绍了Seajs的相关知识和和学习心得,适合刚接触SeaJS的同学,需要的朋友可以参考下,有更好的新手教程或文档,欢迎推荐.分享   1 ...

  2. 【转】关于URL编码/javascript/js url 编码/url的三个js编码函数

    来源:http://www.cnblogs.com/huzi007/p/4174519.html 关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),e ...

  3. 关于URL编码/javascript/js url 编码/url的三个js编码函数

    关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),encodeURI(),encodeURIComponent() 本文为您讲述关于js(javasc ...

  4. javascript(js)小数精度丢失的解决方案

    原因:js按照2进制来处理小数的加减乘除,在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配,所以会出现如下情况. javascript(js)的小数点加减乘除问题,是一个js的bug如0.3* ...

  5. paip.java 以及JavaScript (js) 的关系以及区别

    paip.java 以及JavaScript (js) 的关系以及区别 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...

  6. JavaScript js无间断滚动效果 scrollLeft方法 使用模板

    JavaScript js无间断滚动效果 scrollLeft方法 使用模板 <!DOCTYPE HTML><html><head><meta charset ...

  7. JavaScript(js)/上

    JavaScript(js) ECMA-----定义的基础语法 DOM------document  object  model BOM------Browser  object  model Jav ...

  8. 【HANA系列】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...

  9. Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制

    Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制 1. 语法错误(ERROR)和运行期错误(Exception) 1 2. 错误类型判断 ...

随机推荐

  1. Data Big Bang

    在过去的五十多年中,我们可以较为直观地看到IT行业正以蓬勃发展之势渗入到我们生活的方方面面.虽经历过几轮新兴和重叠的技术浪潮,但每一波浪潮都伴随着新兴技术的革新.IT供应商主导着互联网的走向,网络秩序 ...

  2. flash上传控件跨域

    工作中需要使用百度开发的ueditor,但服务器部署中前端代码和后端代码在不同的域名下,现已解决的前端调后端代码的跨域问题.可是,ueditor中的上传图片flash控件也涉及跨域问题,经过查找发现可 ...

  3. c++ 顺序容器学习

    所谓容器,就是一个装东西的盒子,在c++中,我们把装的东西叫做“元素” 而顺序容器,就是说这些东西是有顺序的,你装进去是什么顺序,它们在里面就是什么顺序. c++中的顺序容器一共有这么几种: vect ...

  4. 简单的URL解析

    简单的URL解析,直接举例说明了 function getUrl(){ //如果存在则取到来后面的参数,注意,?不需要取出,substring从1开始,否则取""; var qs ...

  5. emgucv文字识别

    今天讲如何通过emgucv中的函数来实现文字识别.总体的过程可以分为以下几步: 1.读取要识别的图片 2.对图片进行灰度变换 3.调用emgu.cv.ocr的类tessract中的recognize方 ...

  6. C#学习手册

    考研学子为何放弃考研?C++开发ArcGis为何无疾而终?C#为何又成为新宠?这一切得一切是人性的扭曲还是道德的败坏,敬请收看接下来的C#学习手册.ps:一天一更.拖更打死.

  7. 前端工具-Sublime、WebStorm-快捷方式使用

    记录下我工作中使用的编辑软件Sublime和WebStorm用到的快捷方式来水一贴(*^__^*) Sublime是我使用的最长时间的编辑器了,也熟悉了一些快捷键使用. 1.Ctrl + /  --- ...

  8. React(JSX语法)----JSX拼写

    注意:For DOM differences,such as the inline style attribute,check here. // bad: it displays "FIrs ...

  9. php-长文章分页函数

    <?php function ff_page($content,$page) { global $expert_id; $PageLength = 2000; //每页字数 $CLength = ...

  10. wordpress(三)wordpress手动更新

    第一:备份数据库还有文件 第二:从WP中文官网下载最新版WordPress,下载完毕解压到你电脑上. 第三:删除博客主机上的wp-includes和wp-admin目录. 第四:将解压在本地电脑的wo ...