javascript曾经带给人许多误解,例如如果你不了解它的历史,那么你可能困惑它和java有什么关系,其实它们一点关系都没有。网景公司1995年在Navigator 2.0 中引入这门语言时它叫LiveScript,当时主要用来验证表单。后来被重命名为javascript,因为想借助java的魅力成为构建web程序的主流语言。不幸的是,因为它里面含有java,人们常常认为它是java的精简版。事实上js仅仅模糊的像java,它在语法上和C、Perl、Python也相似。

尽管它的名字引起很大的困惑,但是还是被浏览器开发商接受了。在网景公司把js引入它们2.0的浏览器的时候,微软也把类似的语言引入ie3.0,并命名为JScript。Opera公司从3.x的浏览器也开始支持js。许多其他的浏览器也开始支持js。后来浏览器开发商开始扩展js,于是形成了各种版本的js或jscript.下表详细的列举了不同浏览器支持的js各种版本,不同版本支持的js特性全书都在讨论,附录B提供了js不同版本的特性。

因为js正在快速的改变,而且对跨平台的支持也不一致,因此要注意你使用的js的版本。因为不同的js支持不同的设计,开发者应该编写不同条件下的脚本代码,本书大多数都在讨论这个问题,详细内容看第23章。

因为跨浏览器的js给开发者带来了噩梦,因此标准的js诞生了,被称为ECMAScript(发音eck-ma-script),最新版是3.0的。大多数浏览器基本上完成支持ECMAScript,因为它的名字已经引起注意,大多数的开发者已经开始把它当做像js一样。

注意:js2.0和ECMAScript4.0会一起随着标准化而推进。随着网景公司的没落,什么时候实现这些版本的语言是不清楚的,到目前为止,浏览器还没有实现这个版本。但是本书会提到重要的不同点。

尽管ECMAScript的使用一直在提升,但是js的使用仍然面临挑战。ECMACscript首要考虑的是语言的核心特性如流程控制语句(如if,for,while等)和数据类型。但是js的一些对象集仍然和运行环境有关。这些对象,如window,navigator,history,screen等并不是ECMAScript的一部分。它们是传统的浏览器对象模型(Browser Object Model)或bom的集合。事实上浏览器有基本上相似的细节上不同的BOM对象集,这引起了很大的困惑并且不兼容其他浏览器。bom不兼容最严重的是在4.x版本的浏览器引入动态html或dhtml时。实际上没有像dhtml这样的技术。观点来自于推广4.x的浏览器,并且说动态的效果来自于html,css,js的组合。如果你在讨论dhtml,你其实是在讨论它们的一些交集,它并不是一个脱离js的全新的技术。

幸运的是W3C已经定义了一些标准的对象,用它们可以访问web页面控件如html元素和闭合的文本框架,css属性,甚至是xml元素。希望这样能消除dhtml兼容性的噩梦。它们被称为文档对象模型(Document Object Model)或简称dom。它定义了操作标记行语言html元素的标准方式。然而并没有说什么是传统的对象模型的一部分和什么是dom,还有dom实现的不同。幸运的是现在的浏览器开始抛弃不兼容的特性,页面对象定义的越来越好了,详细的dom信息请看第10章或 www.w3.org/DOM

由ECMAScript制定的核心js,浏览器对象、文档对象提供了各种特性。但是除了核心部分,其他的在不同浏览器之间都有一些不同。

学习js的历史对于掌握js的使用很重要,因为它解释了js更改背后的动机。js作为一种强大的客户端技术,主要的使用方面有:  表单验证     页面渲染和特效  导航系统  基本的数学计算  动态文档  结构文档的操作     js也有它的限制,它不支持错误处理、强类型、构建大程序的特性。尽管它有这些缺点还让人误解,但是它却用途广泛。

javascrit2.0完全参考手册(第二版) 第1章第2节:javascript的历史和使用的更多相关文章

  1. javascrit2.0完全参考手册(第二版) 第2章第2节 语言特性

    脚本执行顺序     js代码是按照它们在html中出现的顺序一行一行被解释的.这表明把函数定义和变量声明放到<head>中会很好.这保证了函数的代码和事件相关的处理程序不会立即执行. 大 ...

  2. javascrit2.0完全参考手册(第二版) 第2章第1节 基本定义

    在这里,我们介绍一些将要使用的编程语言术语.表2-1提供了精确定义的概念. Table 2-1: 编程语言的基本术语 名字 定义 例子 Token令牌 最小的不可分割的词汇的语言单位.一个连续的字符序 ...

  3. javascrit2.0完全参考手册(第二版) 第1章第1节 在XHTML文档中增加javascript

    通常,向文档中增加script脚本使用<script>元素,在HTML中增加脚本的方式有4中: (1)放到<script></script>块中: (2)<s ...

  4. javascrit2.0完全参考手册(第二版) 第2章第4节 基本的数据类型

    每一个变量都有一个确定的类型表明它存储什么样的数据.js基本的数据类型有strings字符串.numbers数字.Booleans布尔类型.字符串是使用双引号或单引号包含的一串字符:数字包括整数或浮点 ...

  5. javascrit2.0完全参考手册(第二版) 第2章第3节 变量

    变量存储数据.每个变量都有一个名字,叫做标识符.在js中声明变量使用var关键字,var为新的数据分配存储空间,或者指示一直标识符正在使用.声明变量非常简单: var x; 这个语句告诉解释器一个新的 ...

  6. Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】

    源码请移步至:https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc 版 ...

  7. Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装

    Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装  一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装Virt ...

  8. CSAPP深入理解计算机系统(第二版)第三章家庭作业答案

    <深入理解计算机系统(第二版)>CSAPP 第三章 家庭作业 这一章介绍了AT&T的汇编指令 比较重要 本人完成了<深入理解计算机系统(第二版)>(以下简称CSAPP) ...

  9. Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建

    一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...

随机推荐

  1. js或jquery实现页面打印可局部打印

    方法一:直接用js的打印方法 <input id="btnPrint" type="button" value="打印" onclic ...

  2. Effective C++ 之 Item 5:了解C++默默编写并调用哪些函数

    Effective C++ chapter 2. 构造 / 析构 / 赋值运算 (Constructors, Destructors, and Assignment Operators) Item 5 ...

  3. 用Feature的方式删除SharePoint2010的Page中重复的WebPart

    用Feature的方式删除SharePoint2010的Page中重复的WebPart. 代码如下所示: public class SupportCenterDuplicatedWebpartRemo ...

  4. poj 1816 (Trie + dfs)

    题目链接:http://poj.org/problem?id=1816 思路:建好一颗Trie树,由于给定的模式串可能会重复,在原来定义的结构体中需要增加一个vector用来记录那些以该节点为结尾的字 ...

  5. jq获取后台json并解析

    参考: $(function () { $.ajax({ url: 'tsconfig.json', type: 'GET', dataType: 'json', timeout: 1000, cac ...

  6. mysql注入小测试

    转自:http://www.jb51.net/article/46163.htm 在开发网站的时候,出于安全考虑,需要过滤从页面传递过来的字符.通常,用户可以通过以下接口调用数据库的内容:URL地址栏 ...

  7. 【转】Java时间日期包 JodaTime

    maven: http://mvnrepository.com/artifact/joda-time/joda-time 1, 获取每天的零点 DateTime dt=new DateTime().w ...

  8. 【转】Kylin中的cube构建

    http://blog.csdn.net/yu616568/article/details/50365240 前言   在使用Kylin的时候,最重要的一步就是创建cube的模型定义,即指定度量和维度 ...

  9. python 文件操作总结

    Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...

  10. 开发Portlet第三步:如何在Crystal Portlet中调用远程服务?

    当基于测试数据的Portlet调试完成后,接下来就是引入远程服务,替换测试数据. (此处以Dubbo框架远程服务为例) 分步指南 删除测试数据依赖:在pom.xml文件中,删除对****-servic ...