第一章 什么是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. 关于Android Studio Emulator常见使用问题

    Q:模拟器无法初始化声音相关设备 Emulator: dsound: Could not initialize DirectSoundCapture Emulator: dsound: Reason: ...

  2. 测试开发:推荐一款阿里最新 Python 自动化开源工具!

    大家好,我是麦小米,是狂师老师全栈测开训练营中的一名学员. 如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过 xc ...

  3. 面试题二:JVM

    JVM垃圾回收的时候如何确定垃圾? 有2种方式: 引用计数 每个对象都有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收: 缺点:无法解决对象循环引用的问题: 可达性分 ...

  4. BUU mrctf shit

    吐槽:去年没写出的题,现在终于可以上手了,昂哥nb 动调发现直接卡着不动了,怀疑是反调试,果然有好几处反调试 这里选择就不先nop了,先让程序跑起来,然后attach,在输入函数下面下个断点,atta ...

  5. PHP 跨域问题 (转)

    通过设置Access-Control-Allow-Origin来实现跨域. 例如:客户端的域名是client.runoob.com,而请求的域名是server.runoob.com. 如果直接使用aj ...

  6. Linux学习之路第十天(磁盘情况查询)

    一.查询系统整体磁盘使用情况 :基本语法 df -h 二.查询指定目录的磁盘占用情况 :基本语法 du -h /目录 查询指定目录的磁盘占用情况,默认为当前目录 选项 应用案例 查询/opt目录,深度 ...

  7. Python 的上下文管理器是怎么设计的?

    花下猫语:最近,我在看 Python 3.10 版本的更新内容时,发现有一个关于上下文管理器的小更新,然后,突然发现上下文管理器的设计 PEP 竟然还没人翻译过!于是,我断断续续花了两周时间,终于把这 ...

  8. Python - bytes与字符串的相互转化

    decode和encode的区别和介绍 by.decode(encoding='UTF-8',errors='strict') str.encode(encoding='UTF-8',errors=' ...

  9. 深度解析 Lucene 轻量级全文索引实现原理

    一.Lucene简介 1.1 Lucene是什么? Lucene是Apache基金会jakarta项目组的一个子项目: Lucene是一个开放源码的全文检索引擎工具包,提供了完整的查询引擎和索引引擎, ...

  10. 锐捷RG-S2951G-EV3 ACL 禁止端口

    (config)ip access-list extended 199 (config)10 deny tcp any any eq 2425 (config)20 deny udp any any ...