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. 2-06使用SQL语句创建数据库3

    向现有数据库中添加文件组和数据文件几种方式以及步骤: 第一种:在视图下添加文件组和数据文件. 添加文件组的步骤: 右击你想要添加文件组的数据库点属性,然后点文件组就可以添加. 添加数据文件的步骤: 下 ...

  2. PHP计算程序运行时间的类

    <?php class runTime{ private $starTime; private $stopTime; private function getMicTime(){ $mictim ...

  3. (五)WebRTC手记Channel概念

    转自:http://www.cnblogs.com/fangkm/p/4401075.html 前面两篇博文完整地介绍了WebRTC音视频的采集模块,接下来应该开始介绍关键的音视频编码模块.不过在介绍 ...

  4. base64编码、解码的C语言实现

    转自:http://www.cnblogs.com/yejianfei/archive/2013/04/06/3002838.html base64是一种基于64个可打印字符来表示二进制数据的表示方法 ...

  5. 第一篇:SOUI是什么?

    概述 用C++做产品最痛苦的是什么?肯定是做UI. SOUI的使命就是把痛苦的UI变化成快乐的UI. 什么?UI还能快乐?脑子进水了吗? 当你看完这个系统教程的时候相信你面对UI至少不会再痛苦.你可以 ...

  6. Effective C++ 之 Item 1: 视C++为一个语言联邦

    Effective C++ Chapter 1. 让自己习惯C++(Accustoming Yourself to C++) Item 1. 视C++为一个语言联邦(View C++ as a fed ...

  7. 字符串截取函数--C语言(转)

    #include<stdio.h> #include<stdlib.h> char* substring(char* ch,int pos,int length) { char ...

  8. MySQL数据库在WINDOWS系统CMD下的编码问题

    MySQL数据库在WINDOWS系统CMD下的编码问题 1. 查看MySQL数据库编码 * SHOW VARIABLES LIKE 'char%'; 2. 编码解释 * character_set_c ...

  9. Liferay 6.2 改造系列之十六:关闭OpenID模式的单点登录

    在/portal-master/portal-impl/src/portal.properties文件中,有如下配置: # # Set this to true to enable OpenId au ...

  10. JavaScript中设置元素class的三种方法小结

    第一.element.setAttribute('class','abc');  第二.element.setAttribute('className', 'abc') : 第三.element.cl ...