1、Javascript简史

javascript诞生于1995年,是由网景公司的Brendan Eich开发的,最初的目的是在客户端处理一些输入验证操作,自此后成为常见浏览器的特色功能,如今用途已经不限于简单的数据验证,而是具备与浏览器窗口及其内容等几乎所有方面交互的能力。当时javascript是为了搭上媒体热炒的java才改名为javascript其最初名为livescript。

在javascript取得巨大成功后,微软公司也在自己的浏览器中加入了名为JScript的javascript实现,从此遍有了两个不同的javascript版本:Netscape Navigator中的javascript和Internet Explorer中的JScript,直到1997年,以javascript1.1为蓝本的建议被提交给了欧洲计算机制造商协会(Europe Computer Manufacturers Association),并指定39号技术委员会(TC39,Technical Committee)负责指定:

标准化一种通用、跨平台、供应商中立的脚本语言的语法和语义

  由此制订了ECMA-262——即名为ECMAScript的脚本语言的标准。

第二年ISO/IEC也采用ECMAScript作为标准,从此以后,浏览器厂商就开始致力于将ECMAScript作为各自Javascript实现的基础。

2、 ECMAScript实现

    javascript的含义要比ECMA-262中规定多得多,一个完整的Javascript实现应该由下列三个不同部分组成

  1. 核心(ECMAScript)
  2. 文档对象模型(Document Object Model)
  3. 浏览器对象模型(Broswer Object Model)
2.1 ECMAScript

ECMAScript与Web浏览器没有依赖关系,浏览器只是ECMAScript实现可能的宿主环境之一,宿主环境也提供了该语言的扩展,以便语言与环境之间对接交互,如DOM利用ECMAScript核心类型和语法提供更多的具体的功能,以便实现对环境的操作,还有其他环境Node、Adobe Flash。

  这门语言并不包含输入输出的定义,ECMA-262只定义了这门语言的基础,在此基础上可以构建更完善的脚本语言。

  1. 语法
  2. 类型
  3. 语句
  4. 关键词
  5. 保留字
  6. 操作符
  7. 对象

ECMAScript就是对实现该标准规定的各个方面内容的语言描述,javascript实现了ECMAScript。Adobe Action也实现了ECMAScript。

2.2 文档对象模型(DOM)

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

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

   早期由于IE和Netscape Navigator分别支持不同形式的DHTML(Dynamic HTML),开始出现各自的分歧,最后W3C着手规划DOM。

  1998年DOM1级成为W3C的标准。DOM1级由两个模块组成:DOM核心和DOM HTML。

DOM1级:  

  DOM核心:如何映射基于XML的文档结构,以便简化对文档中任意部分的访问和操作。

  DOM HTML :在DOM核心基础上扩展,添加了HTML的对象和方法。

  ps:DOM并不只是针对Javascript,别的语言也实现了DOM。

  DOM2级引入了一下新模块:

    DOM视图:定义了跟踪不同文档(例如:应用CSS之前和之后的文档)视图的接口。

    DOM事件:定义了事件和事件处理的借口。

    DOM样式:定义了基于CSS为元素应用样式的借口。

    DOM遍历和范围:定义了遍历和操作文档树的借口。

    

  DOM3进一步扩展了DOM

    DOM加载和保存:引入了统一方式加载和保存文档的方法

    DOM验证:新增加了验证文档的方法。

    DOM核心扩展:开始支持XML1.0规范。

  2.3 BOM对象模型

  IE 和 Netscape Navigator 均支持可访问和操作浏览器窗口的浏览器对象模型(BOM),BOM作为Javascrip实现一部分直到HTML5时才有规范。

  BOM只处理浏览器窗口和框架,由于没有BOM标准,虽然有事实上的标准,比如要有window对象和navigator对象,但每个浏览器都定义了自己的属性,有了HTML5之后,BOM的实现有望朝着兼容性越来越高的方向发展。

小结:

    javascript是专门为与网页交互而设计的脚本,有三个不同部分组成: 

  1. ECMAScript,由ECMA-262定义,提供核心语言功能。
  2. 文档对象模型,提供访问和操作网页内容的方法接口。
  3. 浏览器对象模型,提供与浏览器交互的方法和接口。

Javascript高级程序设计——javascript简介的更多相关文章

  1. Javascript高级程序设计——Javascript简史+使用Javascript

    一.Javascipt简史 1.了解Javascript历史 Netscape(Javascript1.0).Microsoft(JScript)到JS1.1,再到ECMA-262标准 2.知道ECM ...

  2. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介

    前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...

  3. javascript高级程序设计阅读笔记(一)

    javascript高级程序设计阅读笔记(一) 工作之余开发些web应用作为兴趣,在交互方面需要掌握javascript和css.HTML5等技术,因此读书笔记是必要的. javascript简介 J ...

  4. 《JavaScript高级程序设计》学习笔记

    系统学习JS, 从<JavaScript高级程序设计>入门,通过学习jQuery或者angularJS源码来进阶. 第1章 JavaScript简介 1.JS问世的目的是处理以前由服务器端 ...

  5. JavaScript高级程序设计(第三版)学习笔记20、21、23章

    第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值: ...

  6. 读书时间《JavaScript高级程序设计》一:基础篇

    第一次看了<JavaScript高级程序设计>第二版,那时见到手上的书,第一感觉真是好厚的一本书啊.现在再次回顾一下,看的是<JavaScript高级程序设计>第三版,并记录一 ...

  7. JavaScript高级程序设计(读书笔记)(一)

    本笔记汇总了作者认为“JavaScript高级程序设计”这本书的前七章知识重点,仅供参考. 第一章 JavaScript简介 JavaScript发展简史: 1995年,JavaScript诞生 19 ...

  8. JavaScript高级程序设计第三版.CHM【带实例】

    从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...

  9. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

随机推荐

  1. runtime使用小例子 - 给对象O-C属性赋值

    这些日子在家里学习runtime,看runtime的一些方法和前辈们的博客,我也尝试着写几个runtime有效的运用 一.给对象属性赋值,例如一个WebEntity类 她有三个属性:NSString. ...

  2. SaltStack与ZeroMQ(二)

    SaltStack与ZeroMQ SaltStack底层是基于ZeroMQ进行高效的网络通信. ZeroMQ简介 ØMQ (也拼写作ZeroMQ,0MQ或ZMQ)是一个为可伸缩的分布式或并发应用程序设 ...

  3. PHP 基本语法,字符串处理,正则

    <?php //注释语法 /*多行注释*/  输出语法 Echo "hello","worle";         //可以输出多个字符串 Print   ...

  4. 安装vim的ycm

    环境centos 6.7 vim 7.3 安装vundle Vundle(Vim bundle)是一个Vim的插件管理器.它是把git操作整合进去,用户需要做的只是去GitHub上找到自己想要的插件的 ...

  5. python 内建函数setattr() getattr()

    python 内建函数setattr() getattr() setattr(object,name,value): 作用:设置object的名称为name(type:string)的属性的属性值为v ...

  6. conv2、filter2、imfilter的区别

    conv2.filter2.imfilter的区别 -------------------------------------conv2函数------------------------------ ...

  7. Spot光照资料

    http://forums.autodesk.com/t5/FBX-SDK/EmissiveFactor-AmbientFactor-DiffuseFactor/td-p/4230572http:// ...

  8. ecshop团购显示“库存不足”

    产生原因:是因为产品设置了多属性 解决办法:打开group_buy.php 第 267行找到 empty($product_info) ? $product_info = array(, ) : '' ...

  9. MVC实现动态二级域名

    前段时间,一个朋友问我ASP.NET MVC下实现动态二级域名的问题.跟他聊了一些解决方案,这里也总结一下,以供参考. 相信大家都发现类似58同城这样的网站,成都的网址是cd.58.com 上海的是s ...

  10. Effective Objective-C 2.0 — 第12条:理解消息转发机制

    11 条讲解了对象的消息传递机制 12条讲解对象在收到无法解读的消息之后会发生什么,就会启动“消息转发”(message forwarding)机制, 若对象无法响应某个选择子,则进入消息转发流程. ...