从头认识js-js的发展历史
JavaScript简介
JavaScript诞生于1995年,当时,它的主要目的是处理以前有服务端语言(如Perl)负责的一些输入验证操作。
JavaScript简史
1995年2月当时就职于Netscape公司的布兰登.艾奇(Brendan Eich)发布的Netscape Navigator 2 开发一种名为
LiveScript的脚本语言,然后热炒Java的顺风车。临时把LiveScript改名为JavaScript。
1997年,以JavaScript1.1为蓝本的建议被提交给了欧洲计算机制造协商会。TC39(39号技术委员会)由来自Netscape,Sun,微软,Borland及其他关注脚本语言发展的公司的程序员组成,他们经历数月的努力完成了ECMA—262定义一种名为ECMAScript(发音为“ek-ma-script”)的新脚本语言的标准。
第二年,ISO/IEC(Internationnal Organization for Standardization and International Electrotechnical Commission,国际标准化组织和国际电工委员会)也采用了ECMAScript作为标准(即ISO/IEC-16262)。自此以后,浏览器开发商就开始致力于将ECMAScript作为各自JavaScript实现的基础,也在不同程度上取得了成功。
JavaScript实现
通常我们把JavaScript和ECMAScript用来表达相同的含义,但是一个完整的JavaScript由以下三个不同的部分组成。
1.核心(ECMAScript)
2.文档对象模型(DOM)
3.浏览器对象模型(BOM)
ECMAScript
事实上由ECMA-262定义的ECMAScript与web浏览器没有依赖关系。实际上,这门语言本身并不包含输入和输出定义。只是定义了这门语言的基础,而在基础上可以构建更完善的脚本语言。常见的web浏览器只是ECMAScript实现的可能宿主环境之一。宿主环境不仅提供基本的ECMAScript的实现,同时也会提供该语言的扩展,以便语言与环境之间的对接交互。如DOM,则利用ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他宿主环境包括Node(一种服务端JavaScript平台)和Adode Flash。
ECMA-262标准规定了这门语言的下列组成部分:
1.语法
2.类型
3.语句
4.关键字
5.保留字
6.操作符
7.对象
文档对象模型(DOM)
文档对象模型(DOM, Doument Object Model)是针对XML但经过扩展用于HTML的应用程序编程接口(API,Application Programming Interface)。DOM把整个页面映射为一个多层点结构。HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同的类型数据。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>DOM</title>
</head>
<body>
<header>hello ydb!</header>
</body>
</html>
通过DOM创建的这个表示文档的树形图,开发人员获得了控制页面内容和结构的主动权。借助DOM提供的API,开发人员可以轻松删除,添加,替换或修改任何节点。
为什么要使用DOM了?,由于Netscape和微软在开发DHTML(Dynamic HTML)各持己见,所有就出现了web开发领域的两强割据,浏览器互不兼容的局面。所以负责制定Web通信标准的W3C(World Wide Web Consortium,万维网联盟)开始着手规划DOM。
浏览器对象模型(BOM)
根本上讲,BOM只处理浏览器窗口和框架;习惯上也把所有针对浏览器的JavaScript的扩展算作BOM的一部分。下面是一些这样的扩展:
1.弹出新浏览器窗口的功能
2.移动,缩放和关闭浏览器窗口饿功能
3.提供浏览器详细信息的navigator对象
4.提供浏览器所加载页面详细信息的location对象
5.提供用户显示器分辨率详细信息的screen对象
6.对cookies的支持
7.像XMLHttpRequest和IE的ActiveXObject这样的自定义对象
小结
JavaScript是一种专门为网页交互而设计的脚本语言,由下列三个不同的部分组成:
1.ECMAScript 由ECMA-262定义,提供核心语言功能。
2.文档对象模型(DOM),提供访问和操作网页内容的方法和接口
3.浏览器对象模型(BOM),提供与浏览器交互的方法和接口
从头认识js-js的发展历史的更多相关文章
- Web开发技术发展历史
Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互 ...
- JavaScript 、ECMAScript、commonJS 发展历史 与标准化发展
本文介绍下JavaScript和 ECMAScript的诞生及发展历史,以及标准化过程. 一.JavaScript诞生 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版. ...
- Http协议基础及发展历史
一.网络分层协议 经典五层模型 1.物理层:(电脑的硬件,网卡端口,网线,网线连出去的光缆) 定义物理设备如何传输数据 2.数据链路层 在通信的实体间建立数据链路连接. 两台机器物理上是可以连接在一起 ...
- HTTP从入门到入土(2)——HTTP协议发展历史
HTTP协议的发展历史 HTTP/0.9 0.9版本是第一个定稿的HTTP版本,相对较为简陋.它有以下特点: 只有一个命令GET 没有header等描述数据的信息 服务器发送完毕,就关闭TCP连接 注 ...
- 【转载】Web开发技术发展历史-版本1
原文在这里. Web开发技术发展历史 Web的诞生 提到Web,不得不提一个词就是“互联网”.Web是World Wide Web的简称,中文译为万维网.“万维网”和我们经常说的“互联网”是两个联系极 ...
- web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史
秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...
- 秒懂Vuejs、Angular、React原理和前端发展历史
「前端程序发展的历史」 「 不学自知,不问自晓,古今行事,未之有也 」 我们都知道现在流行的框架:Vue.Js.AngularJs.ReactJs,已经逐渐应用到各个项目和实际应用中,它们都是MVVM ...
- CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系
CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...
- .net版本发展历史
最近装上了VS2013,发现好多新特性.新功能,公司办公还在使用VS2005.VS2008,不过用着也很顺手,在最新版Visual Studio中,微软加入了git源码管理工具,和之前的TFS大体上类 ...
- 软件项目发展历史<人月神话>这本书好
几乎是计算机软件开发的发展历史 人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就 ...
随机推荐
- Work Scheduling(带反悔的贪心)
https://www.luogu.org/problem/P2949 题目描述 Farmer John has so very many jobs to do! In order to run th ...
- 2018SEERC Points and Rectangles (CDQ分治)
题:http://codeforces.com/gym/101964/problem/K 分析:https://blog.csdn.net/qq_43202683/article/details/98 ...
- Spring Cloud服务消费者(rest+ribbon)
在上一篇文章,讲了服务的注册和发现.在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式,一种是ribbon+r ...
- python之time模块和hashlib模块
一.time模块 import time print(time.strftime('%Y-%m-%d %H:%M:%S'))#获取当前的格式化时间,time.strftime(format) prin ...
- TCP并发、GIL、锁
TCP实现并发 #client客户端 import socket client = socket.socket() client.connect(('127.0.0.1',8080)) while T ...
- iOS 开发中有关pch文件,以及pch常用的内容
一.创建pch文件.点击command+N.如下图操作 命名规则一般都是:项目名称-Prefix 第二步 OK,到这里已经把pch文件制作完毕.接下来就可以用了. pch文件一般书写的是全局都可以用到 ...
- Leetcode9_回文数
哈哈哈哈哈哈哈太开心了,今天的代码耗时和内存消耗比官方少了一半哈哈 (因为官方用C#写的,我用C++,手动狗头) 题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样 ...
- 吴裕雄--天生自然 Hadoop大数据分布式处理:关闭CenterOS 7防火墙
使用命令:systemctl status firewalld.service 查看防火墙状态 执行后可以看到绿色字样标注的“active(running)”,说明防火墙是开启状态 使用命令:syst ...
- 转载【docker】CMD ENTRYPOINT 的使用方法
原文:https://blog.csdn.net/u010900754/article/details/78526443
- [LC] 71. Simplify Path
Given an absolute path for a file (Unix-style), simplify it. Or in other words, convert it to the ca ...