第一章 什么是Javascript

一、历史

JavaScript的名字怎么来的

首先,我们从javascript的历史开始了解,在以前的时候网页要验证某个必填字段是否填写,或者是判断输入的值的正确与否,每一次都要与服务器来一次交互通信,你可以想象一下:“当你填完一个信息登记表单,提交后,等待30秒,结果确实你的必填字段没填或者是值无效”,想象都崩溃:(

然后,1995 年,网景公司一位名叫 Brendan Eich 的工程师,开始为即将发布的 Netscape Navigator 2(是浏览器简称NN) 开发一个叫 Mocha(后来改名为 LiveScript)的脚本语言。当时的计划是在客户端和服务器端都使用它,它在服务器端叫 LiveWire。LiveScript就是来解决这种每一次都要与服务器来一次交互通信的问题,后来为了赶上java的热度就改名为javascript

JavaScript这个名字就这么诞生了。

又来一个JScript?

但是,到后来微软看到网景公司的JavaScript大受欢迎,于是就大力投入资源研发IE,在网景公司发布Netscape Navigator 3之后不久,微软就发布了IE3,为了与网景的JavaScript有区别把解决服务器的往返通信问题的脚本取名JScript。

有两个版本一个JavaScript、一个JScript怎么办?

微软的 JavaScript 实现意味着出现了两个版本的 JavaScript:Netscape Navigator 中的 JavaScript,以及 IE 中的 JScript。JavaScript 还没有规范其语法或特性的标准,两个版本并存让这个问题更加突出了。随着业界担忧日甚,JavaScript 终于踏上了标准化的征程。为了给JavaScript标准化,1997 年,JavaScript 1.1 作为提案被提交给欧洲计算机制造商协会(Ecma),一群少年走上了改造之路,这群少年就是来自网景、Sun、微软、Borland、Nombas 和其他对这门脚本语言有兴趣的公司的工程师组成。他们被称为第 39 技术委员会(TC39),通过他们的努力就打造了ECMA-262,新的的脚本语言标准

二、 知识点

以上部分就是一些历史故事,有兴趣可以仔细了解,重点还是以下知识点:
 
1.其实JavaScript是分成3个部分BOM、DOM、ECMAscript,BOM和DOM我们会在后面的内容在学习现在就了解了解。
 
2.ECMAscript在前面的历史可以了解到就是一种规范,满足这种规范的都是ECMAscript,JavaScript 实现了ECMAScript,而 Adobe ActionScript 同样也实现了 ECMAScript。
 
3.ECMAscript到底定义了那些呢?
语法、类型、语句 、关键字、保留字、操作符、全局对象。
 
4.随着ECMAscript的发展有了很多的版本:
主要学习ES5和ES6版本,但是到现在一共有到ES10版本;
ECMA-262第 5 版新功能包括原生的解析和序列化 JSON 数据的 JSON 对象、方便继承和高级属性定义的方法,以及新的增强 ECMAScript 引擎解释和执行代码能力的严格模式。
ECMA-262 第 6 版,俗称 ES6、ES2015 或 ES Harmony(和谐版),于 2015 年 6 月发布。这一版包含了大概这个规范有史以来最重要的一批增强特性。ES6 正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。
 
5.ECMAScript 符合性是什么意思?
ECMA-262 阐述了什么是 ECMAScript 符合性。要成为 ECMAScript 实现,必须满足下列条件(前两个是必要条件):
~支持 ECMA-262 中描述的所有“类型、值、对象、属性、函数,以及程序语法与语义”;
~支持 Unicode 字符标准。
此外,符合性实现还可以满足下列要求。
~增加 ECMA-262 中未提及的“额外的类型、值、对象、属性和函数”。ECMA-262 所说的这些额
外内容主要指规范中未给出的新对象或对象的新属性。
~支持 ECMA-262 中没有定义的“程序和正则表达式语法”(意思是允许修改和扩展内置的正则表
达式特性)。
 
6.DOM(文档对象模型)是一个应用编程接口(API),用于在 HTML 中使用扩展的 XML。DOM 将整个页面抽象为一组分层节点。HTML 或 XML 页面的每个组成部分都是一种节点,包含不同的数据。
DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。使用 DOM API,可以轻松地删除、添加、替换、修改节点。
 
7.万维网联盟(W3C,World Wide WebConsortium)开始了制定 DOM 标准
 

8.BOM

IE3 和 Netscape Navigator 3 提供了浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗
口。使用 BOM,开发者可以操控浏览器显示页面之外的部分。而 BOM 真正独一无二的地方,当然也是
问题最多的地方,就是它是唯一一个没有相关标准的 JavaScript 实现。HTML5 改变了这个局面,这个版
本的 HTML 以正式规范的形式涵盖了尽可能多的 BOM 特性。由于 HTML5 的出现,之前很多与 BOM
有关的问题都迎刃而解了。
总体来说,BOM 主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的
扩展都归在 BOM 的范畴内。比如,下面就是这样一些扩展:
   弹出新浏览器窗口的能力;
   移动、缩放和关闭浏览器窗口的能力;
   navigator 对象,提供关于浏览器的详尽信息;
   location 对象,提供浏览器加载页面的详尽信息;1.3 JavaScript 版本
   screen 对象,提供关于用户屏幕分辨率的详尽信息;
   performance 对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;
   对 cookie 的支持;
   其他自定义对象,如 XMLHttpRequest 和 IE 的 ActiveXObject。
因为在很长时间内都没有标准,所以每个浏览器实现的都是自己的 BOM。有一些所谓的事实标准,
比如对于 window 对象和 navigator 对象,每个浏览器都会给它们定义自己的属性和方法。现在有了
HTML5,BOM 的实现细节应该会日趋一致。关于 BOM,本书会在第 12 章再专门详细介绍。
 

总结:这章主要是了解JavaScript的诞生历史和DOM、BOM的概念,那个时候网页开发非常的不统一很乱,于是为了统一而产生了许多的标准:ECMAscript、DOM标准到后来的BOM的html5日趋一致。

 
 
 
 

JavaScript高级程序设计(第4版)-第一章学习的更多相关文章

  1. javascript高级程序设计第3版——第一章概括

    最近发现Xmind思维导图是个好东西,刚好开始看书,被用来归纳最好不过了

  2. javascript高级程序设计第3版——第二章使用javascript

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

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

  4. JavaScript 高级程序设计 (第4版) 思维导图/脑图 All In One

    JavaScript 高级程序设计 (第4版) 思维导图/脑图 All In One JavaScript 高级程序设计 (第4版) 思维导图下载 JavaScript 高级程序设计 (第4版) 脑图 ...

  5. 《JavaScript高级程序设计》(第二版)

    这本书的作者是 Nicholas C.Zakas ,博客地址是 http://www.nczonline.net/ ,大家可以去多关注,雅虎的前端工程师,是YUI的代码贡献者,可想而知这本书得含金量, ...

  6. JavaScript高级程序设计第三版-读书笔记(1-3章)

    这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript   提供核心语言功能 DOM     提供访问 ...

  7. 22.1 高级函数【JavaScript高级程序设计第三版】

    函数是JavaScript 中最有趣的部分之一.它们本质上是十分简单和过程化的,但也可以是非常复杂和动态的.一些额外的功能可以通过使用闭包来实现.此外,由于所有的函数都是对象,所以使用函数指针非常简单 ...

  8. 《JavaScript高级程序设计》心得笔记-----第一篇章

    第一章 JavaScript由ECMAScript.DOM.BOM组成.其中BOM功能在HTML5中有了正式的规范,使BOM的兼容性越来越高. 第二章 1.<script>属性中的asyn ...

  9. JavaScript高级程序设计—阅读笔记(第一部分)

    第一章 JavaScript简介1.JavaScript组成(核心(ECMAScript),文档对象模型(DOM),浏览器对象模型(BOM))2.文档对象模型(DOM),提供访问和操作网页内容的方法和 ...

  10. javascript高级程序设计第3版——第6章 面向对象的程序设计

    第六章——面向对象的程序设计 这一章主要讲述了:面向对象的语言由于没有类/接口情况下工作的几种模式以及面向对象语言的继承: 模式:工厂模式,构造函数模式,原型模式 继承:原型式继承,寄生式继承,以及寄 ...

随机推荐

  1. 通过UnityWebRequest得到的纹理转精灵

    private IEnumerator GetImage(string url, Image fileImage) { UnityWebRequest WebRequest = new UnityWe ...

  2. VS 2017 RC .net core ef+ MySql 出现错误

    在di注入时会出现错误 MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilderFactory..ctor(ISensit ...

  3. 18、linux文件属性

    文件的描述信息: [root@centos6 /]# ls -lih 总用量 118K 3538945 drwxr-xr-x 3 root root 4.0K 8月 23 17:12 app 3276 ...

  4. 跟我一起学Go系列:Go gRPC 安全认证机制-SSL/TLS认证

    Go gRPC 系列: 跟我一起学Go系列:gRPC 拦截器使用 跟我一起学Go系列:gRPC 入门必备 第一篇入门说过 gRPC 底层是基于 HTTP/2 协议的,HTTP 本身不带任何加密传输功能 ...

  5. salesforce零基础学习(一百零五)Change Data Capture

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...

  6. Postgresql:postgres命令行导入sql文件

    sql文件导入 psql -d jdbc -h localhost -p 5432 -U postgres -f /home/sql/test.sql #-d 数据库名称 #-h ip地址 #-p 端 ...

  7. java:UDP广播发送与接收数据报实现

    编写广播数据类 package com.zy.java.service; import java.io.*; import java.net.DatagramPacket; import java.n ...

  8. 资源:Maven仓库地址路径

    Maven下载路径 https://archive.apache.org/dist/maven/maven-3/ 查找需要引入的包路径时,可以在maven仓库进行查找 maven仓库地址:https: ...

  9. easyswoole实现线上更新代码

    众所周知,easyswoole作为常驻内存的框架,修改代码并不能直接生效,而是需要重启服务,那么,当你的easyswoole项目上线之后,该如何保证旧请求的同时去更新代码呢? nginx reload ...

  10. 协程与Swoole的原理,相关应用以及适用场景等

    什么是协程 协程(Coroutine)也叫用户态线程,其通过协作而不是抢占来进行切换.相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低.协程是进程的补充,或者是互补关系. 要 ...