JavaScript简介

JavaScript诞生于1995年,当时,它的主要目的是处理以前有服务端语言(如Perl)负责的一些输入验证操作。

JavaScript简史

1995年2月当时就职于Netscape公司的布兰登.艾奇(Brendan Eich)发布的Netscape Navigator 2 开发一种名为

LiveScript的脚本语言,然后热炒Java的顺风车。临时把LiveScript改名为JavaScript。

1997年,以JavaScript1.1为蓝本的建议被提交给了欧洲计算机制造协商会。TC39(39号技术委员会)由来自Netscape,Sun,微软,Borland及其他关注脚本语言发展的公司的程序员组成,他们经历数月的努力完成了ECMA—262定义一种名为ECMAScript(发音为“ek-ma-script”)的新脚本语言的标准。

第二年,ISO/IEC(Internationnal Organization for Standardization and International Electrotechnical Commission,国际标准化组织和国际电工委员会)也采用了ECMAScript作为标准(即ISO/IEC-16262)。自此以后,浏览器开发商就开始致力于将ECMAScript作为各自JavaScript实现的基础,也在不同程度上取得了成功。

JavaScript实现

通常我们把JavaScript和ECMAScript用来表达相同的含义,但是一个完整的JavaScript由以下三个不同的部分组成。

1.核心(ECMAScript)

2.文档对象模型(DOM)

3.浏览器对象模型(BOM)

ECMAScript

事实上由ECMA-262定义的ECMAScript与web浏览器没有依赖关系。实际上,这门语言本身并不包含输入和输出定义。只是定义了这门语言的基础,而在基础上可以构建更完善的脚本语言。常见的web浏览器只是ECMAScript实现的可能宿主环境之一。宿主环境不仅提供基本的ECMAScript的实现,同时也会提供该语言的扩展,以便语言与环境之间的对接交互。如DOM,则利用ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他宿主环境包括Node(一种服务端JavaScript平台)和Adode Flash。

ECMA-262标准规定了这门语言的下列组成部分:

1.语法

2.类型

3.语句

4.关键字

5.保留字

6.操作符

7.对象

文档对象模型(DOM)

文档对象模型(DOM, Doument Object Model)是针对XML但经过扩展用于HTML的应用程序编程接口(API,Application Programming Interface)。DOM把整个页面映射为一个多层点结构。HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同的类型数据。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>DOM</title>
</head>
<body>
<header>hello ydb!</header>
</body>
</html>

通过DOM创建的这个表示文档的树形图,开发人员获得了控制页面内容和结构的主动权。借助DOM提供的API,开发人员可以轻松删除,添加,替换或修改任何节点。

为什么要使用DOM了?,由于Netscape和微软在开发DHTML(Dynamic HTML)各持己见,所有就出现了web开发领域的两强割据,浏览器互不兼容的局面。所以负责制定Web通信标准的W3C(World Wide Web Consortium,万维网联盟)开始着手规划DOM。

浏览器对象模型(BOM)

根本上讲,BOM只处理浏览器窗口和框架;习惯上也把所有针对浏览器的JavaScript的扩展算作BOM的一部分。下面是一些这样的扩展:

1.弹出新浏览器窗口的功能

2.移动,缩放和关闭浏览器窗口饿功能

3.提供浏览器详细信息的navigator对象

4.提供浏览器所加载页面详细信息的location对象

5.提供用户显示器分辨率详细信息的screen对象

6.对cookies的支持

7.像XMLHttpRequest和IE的ActiveXObject这样的自定义对象

小结

JavaScript是一种专门为网页交互而设计的脚本语言,由下列三个不同的部分组成:

1.ECMAScript 由ECMA-262定义,提供核心语言功能。

2.文档对象模型(DOM),提供访问和操作网页内容的方法和接口

3.浏览器对象模型(BOM),提供与浏览器交互的方法和接口

从头认识js-js的发展历史的更多相关文章

  1. Web开发技术发展历史

    Web开发技术发展历史   来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...

  2. JavaScript 、ECMAScript、commonJS 发展历史 与标准化发展

    本文介绍下JavaScript和 ECMAScript的诞生及发展历史,以及标准化过程. 一.JavaScript诞生 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版. ...

  3. Http协议基础及发展历史

    一.网络分层协议 经典五层模型 1.物理层:(电脑的硬件,网卡端口,网线,网线连出去的光缆) 定义物理设备如何传输数据 2.数据链路层 在通信的实体间建立数据链路连接. 两台机器物理上是可以连接在一起 ...

  4. HTTP从入门到入土(2)——HTTP协议发展历史

    HTTP协议的发展历史 HTTP/0.9 0.9版本是第一个定稿的HTTP版本,相对较为简陋.它有以下特点: 只有一个命令GET 没有header等描述数据的信息 服务器发送完毕,就关闭TCP连接 注 ...

  5. 【转载】Web开发技术发展历史-版本1

    原文在这里. Web开发技术发展历史 Web的诞生 提到Web,不得不提一个词就是“互联网”.Web是World Wide Web的简称,中文译为万维网.“万维网”和我们经常说的“互联网”是两个联系极 ...

  6. web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史

    秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...

  7. 秒懂Vuejs、Angular、React原理和前端发展历史

    「前端程序发展的历史」 「 不学自知,不问自晓,古今行事,未之有也 」 我们都知道现在流行的框架:Vue.Js.AngularJs.ReactJs,已经逐渐应用到各个项目和实际应用中,它们都是MVVM ...

  8. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系

    CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...

  9. .net版本发展历史

    最近装上了VS2013,发现好多新特性.新功能,公司办公还在使用VS2005.VS2008,不过用着也很顺手,在最新版Visual Studio中,微软加入了git源码管理工具,和之前的TFS大体上类 ...

  10. 软件项目发展历史<人月神话>这本书好

    几乎是计算机软件开发的发展历史     人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就 ...

随机推荐

  1. We don't wanna work!

    We don't wanna work! [JAG Asia 2016] 两个set,一个代表工作的,一个代表不工作的 其实是一个很简单的模拟,但是我竟然排序之前标号.... 检查代码的时候要从头开始 ...

  2. poj-3661 Running(DP)

    http://poj.org/problem?id=3661 Description The cows are trying to become better athletes, so Bessie ...

  3. kaggle——绝地求生游戏最终排名预测

    绝地求生游戏最终排名预测 知识点 数据读取与预览 数据可视化 构建随机森林预测模型 导入数据并预览 先导入数据并预览.本次实验同样来源于 Kaggle 上的一个竞赛: 绝地求生排名预测 ,由于原始数据 ...

  4. svn http

    yum install -y httpd subversion mod_dav_svn mkdir -p /var/lib/svn cd /var/lib/svn svnadmin create de ...

  5. DateTimePicket jQuery 日期插件,开始时间和结束时间示例

    需要引入的js文件: <input type="text" id="startTime" placeholder="开始时间"/> ...

  6. day23-logging模块

    # logging日志记录的两个内容:1.有5种级别的日志记录模式.2.两种配置方式:basicconfig.logger对象. # logging的作用: #1.排错的时候需要打印很多细节来帮助排错 ...

  7. Servlet&JSP复习笔记 04

    1.状态管理 因为HTTP协议是无状态协议,但很多时候需要将客户端和服务端的多次请求当做一个来对待.将多次交互中设计的数据进行保存. 状态:数据 管理:对数据的维护 2.Cookie 客户端向服务器发 ...

  8. 【mysql学习】InnoDB数据结构

    原来知道有一些索引失效的条件,最近看了看mysql底层数据结构,明白了为什么会失效 ,记录之.众所周知,常用的mysql数据引擎有两种,今天全是以InnoDB为基础开启探索之旅的,另一种有时间再说吧. ...

  9. hdu5452

    http://acm.hdu.edu.cn/showproblem.php?pid=5452 题意:给个图T(图G的最小生成树),然后再给定图G的剩余边,问你从图T中当且割一条边的情况再割图G中不属于 ...

  10. leetcode第32题:最长有效括号

    关于括号匹配或生成的问题,首先想到的是栈. 本题易错点:返回值为连续有效()的长度, 即()(()这种情况下,返回值为2 # 去除字符串首的连续)和字符串尾得连续( while True: if no ...