javascrit2.0完全参考手册(第二版) 第1章第2节:javascript的历史和使用
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的历史和使用的更多相关文章
- javascrit2.0完全参考手册(第二版) 第2章第2节 语言特性
脚本执行顺序 js代码是按照它们在html中出现的顺序一行一行被解释的.这表明把函数定义和变量声明放到<head>中会很好.这保证了函数的代码和事件相关的处理程序不会立即执行. 大 ...
- javascrit2.0完全参考手册(第二版) 第2章第1节 基本定义
在这里,我们介绍一些将要使用的编程语言术语.表2-1提供了精确定义的概念. Table 2-1: 编程语言的基本术语 名字 定义 例子 Token令牌 最小的不可分割的词汇的语言单位.一个连续的字符序 ...
- javascrit2.0完全参考手册(第二版) 第1章第1节 在XHTML文档中增加javascript
通常,向文档中增加script脚本使用<script>元素,在HTML中增加脚本的方式有4中: (1)放到<script></script>块中: (2)<s ...
- javascrit2.0完全参考手册(第二版) 第2章第4节 基本的数据类型
每一个变量都有一个确定的类型表明它存储什么样的数据.js基本的数据类型有strings字符串.numbers数字.Booleans布尔类型.字符串是使用双引号或单引号包含的一串字符:数字包括整数或浮点 ...
- javascrit2.0完全参考手册(第二版) 第2章第3节 变量
变量存储数据.每个变量都有一个名字,叫做标识符.在js中声明变量使用var关键字,var为新的数据分配存储空间,或者指示一直标识符正在使用.声明变量非常简单: var x; 这个语句告诉解释器一个新的 ...
- Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】
源码请移步至:https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc 版 ...
- Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装
Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装 一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装Virt ...
- CSAPP深入理解计算机系统(第二版)第三章家庭作业答案
<深入理解计算机系统(第二版)>CSAPP 第三章 家庭作业 这一章介绍了AT&T的汇编指令 比较重要 本人完成了<深入理解计算机系统(第二版)>(以下简称CSAPP) ...
- Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建
一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...
随机推荐
- hdu 4753 2013南京赛区网络赛 记忆化搜索 ****
看到范围基本可以想到dp了,处理起来有点麻烦 #include<iostream> #include<cstdio> #include<cstring> #incl ...
- 安装pyspider
费了三个小时,换了很多版本的Python pip lxml,最终选择安装anaconda2 非常顺利 运行pyspider后localhost:500正常显示 开森
- AndroidStudio里面怎么取消与SVN的关联
在公司做项目 遇到SVN解除关联的问题 后经过解决: 1.解除文件的关联方法: 1.1. 创建一个reg文件 如下 1.2 在文件中填入如下内容并保存: Windows Registry Editor ...
- Linux---从start_kernel到init进程启动
“平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” ini ...
- CentOS配置本地yum源(使用镜像iso文件)
本人在使用yum安装软件的时候,感觉最不爽的是网络不佳时,安装的速度特别慢.所以,个人就上网search了一下如何使用Linux的安装文件作为其yum源.经过几次尝试,已经可以成功的配置了.下面是详细 ...
- getTickCount()函数 VS GetTickCount()函数
这俩函数看上去长得太像了,笔者曾经马大哈地把两者当成一个函数了(确实长得很像),知道有一天发现返回的值离预期值差很远差仔细查了下. 1. getTickCount() 实际上,该函数为opencv中的 ...
- DOM--3 DOM核心和DOM2 HTML(3)
核心Element对象 操作Element对象的属性 为了简化对attributes的处理,Element对象中包含了很多用来操纵Node对象的attributes属性的方法: getAttribut ...
- ReportViewer报表
个人感觉ReportViewer>DataGridView>listView 打开一个空的winform窗体程序,工具栏报表拖入 ReportViewer 在空的Form1中 在同一命名空 ...
- 对于for的一些认识
/*▲ ▲▲ ▲▲▲ ▲▲▲▲ ▲▲▲▲▲ ▲▲▲▲▲▲*/例:如图用for嵌套打印一个三 ...
- Codeforces Edu3 E. Minimum spanning tree for each edge
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...