(50)Wangdao.com第七天_JavaScript 发展与简介
一个完整的JavaScript 应该由以下三部分组成:
- ECMAScript
- DOM,全称Browser Object Model,即浏览器对象模型,主要处理浏览器窗口和框架
- BOM,全称Document Object Model,即文档对象模型,是
HTML
和XML
的应用程序接口(API
),遵循W3C 的标准,所有浏览器公共遵守的标准
JavaScript
是通过访问 BOM
(Browser Object Model)对象来访问、控制、修改客户端(浏览器),
由于 BOM
的 window
包含了 document
,window 对象的属性和方法是直接可以使用而且被感知的,
因此可以直接使用 window
对象的 document
属性,通过 document
属性就可以访问、检索、修改 XHTML 文档内容与结构。
因为 document
对象又是 DOM(Document Object Model)模型的根节点。
可以说,BOM 包含了 DOM
(对象),浏览器提供出来给予访问的是 BOM 对象,从 BOM 对象再访问到 DOM
对象,从而 js 可以操作浏览器以及浏览器读取到的文档。
作者:昊晗远昂
出处: http://www.cnblogs.com/splendid/
转载请注明出处和原文链接
JavaScript 发展
- 诞生于1995年,由 NetScape 网景公司推出,主要用于处理网页中的前端验证, 在发布前准备叫 livescript 。
1995年,Netscape 公司雇佣了程序员 Brendan Eich 开发这种网页脚本语言。
Brendan Eich 有很强的函数式编程背景,希望以 Scheme 语言(函数式语言鼻祖 LISP 语言的一种方言)为蓝本,实现这种新语言。
1995年5月,Brendan Eich 只用了10天,就设计完成了这种语言的第一版。它是一个大杂烩,语法有多个来源。
- 基本语法:借鉴 C 语言和 Java 语言。
- 数据结构:借鉴 Java 语言,包括将值分成原始值和对象两大类。
- 函数的用法:借鉴 Scheme 语言和 Awk 语言,将函数当作第一等公民,并引入闭包。
- 原型继承模型:借鉴 Self 语言(Smalltalk 的一种变种)。
- 正则表达式:借鉴 Perl 语言。
- 字符串和数组处理:借鉴 Python 语言。
- 1996年,微软公司在其 IE3 中引入了自己对 JavaScript 的实现,JScript 。
- 1997年,网景公司无奈将 JavaScript 捐献给了欧洲计算机制造商协会 ECMA,1998年,ECMAScript 第2版登场。。。DOMLevel 1 的制定。。。新型语言 DHTML 登场。
ECMAScript 第1版登场
ECMAScript 作为一个标准存在,只有文档没有实现,交给各个厂商去实现。
上面这个原因,才有了现在的 FireFox 的 SpiderMonKey 引擎,IE 的 JScript,Chrome 的 V8 引擎是整个JS最快的引擎... ...
网景公司也卖了,变成了现在的 FireFox 。
- 1999年,ECMAScript 第 3 版登场。
- 2000年,DOMLevel 2 的制定。
- 2002年,ISO/IEC 16262:2002 确立。
- DOMLevel 3 的制定。
- 2005年,新型语言 AJAX 登场。
- 2009年,ECMAScript 第 5 版登场。。。新型语言 HTML5 登场。
- 2015年,ECMAScript 第 5 版登场。
- js 如今可以干什么?
- 验证表单
- 网页动态效果
- 服务器端开发 node.js
- 开发有限
- 客户端与服务器端的交互
- javascript
- java 是一门编译型语言,需要经过编译器编译成计算机认识的二进制,然后再执行。
- js 是一门解释型语言,不需要编译,由浏览器作为解释器,直接一条一条执行。
- js 是一种小型的,简单的,动态语言,变量可以保存任何类型的数据,性能上相较于静态语言要差一点,但是由于JavaScript中应用的JIT技术,JS可能是运行速度最快的动态语言。
- js 可以模拟类的概念,但不是面向对象语言。
- 函数是一种独立的数据类型,采用基于原型对象prototype的继承链。比java更自由。
- 编程风格是,函数式编程和面向对象编程的一种混合体。
- ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现。
- ECMAScript 只用来标准化 JavaScript 这种语言的基本语法结构,与部署环境相关的标准都由其他标准规定
比如 DOM 的标准就是由 W3C组织(World Wide Web Consortium)制定的。
- 2008年,V8 编译器诞生
这是 Google 公司为 Chrome 浏览器而开发的,它的特点是让 JavaScript 的运行变得非常快。
它提高了 JavaScript 的性能,推动了语法的改进和标准化,改变外界对 JavaScript 的不佳印象。
同时,V8 是开源的,任何人想要一种快速的嵌入式脚本语言,都可以采用 V8,这拓展了 JavaScript 的应用领域。
- 2009年,Node.js 项目诞生,创始人为 Ryan Dahl
它标志着 JavaScript 可以用于服务器端编程,从此网站的前端和后端可以使用同一种语言开发。
并且,Node.js 可以承受很大的并发流量,使得开发某些互联网大规模的实时应用变得容易。
- 2013年5月,Facebook 发布 UI 框架库 React,引入了新的 JSX 语法,使得 UI 层可以用组件开发,同时引入了网页应用是状态机的概念。
- 2015年4月,Angular 框架宣布,2.0 版将基于微软公司的 TypeScript 语言开发,这等于为 JavaScript 语言引入了强类型。
- 2015年6月,Mozilla 在 asm.js 的基础上发布 WebAssembly 项目
这是一种 JavaScript 引擎的中间码格式,全部都是二进制,类似于 Java 的字节码
有利于移动设备加载 JavaScript 脚本,执行速度提高了 20+ 倍。这意味着将来的软件,会发布 JavaScript 二进制包。
- 2017年11月,所有主流浏览器全部支持 WebAssembly
这意味着任何语言都可以编译成 JavaScript,在浏览器运行。
(50)Wangdao.com第七天_JavaScript 发展与简介的更多相关文章
- (51)Wangdao.com第七天_JavaScript 编写位置及输出语句
JavaScript 编写位置 编写在html内部标签的属性中 不推荐使用,因为结构和行为耦合,不便于维护 主要有 <button onclick="alert('点我干哈!');& ...
- (53)Wangdao.com第七天_JavaScript 强制类型转换
其他进制的数字 二进制 以 0b 开头的 Number 八进制 以 0 开头的 Number 十六进制 以 0x 开头的 Number 注意:无论是多少进制的数字,输出都是十进制 强 ...
- (54)Wangdao.com第七天_JavaScript 运算符
JavaScript 运算符,也叫操作符 对一个或者多个值进行运算,都是会返回结果的. 比如: typeof 返回一个值的类型,返回值类型是字符串. 隐式类型转换: 任意值 = 任意值 + &q ...
- {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)
{Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) Django基础七之 ...
- 50种编程语言,一句 “Hello, World”!展现编程语言七十年发展!
mod confinment { use std::os::raw::{c_char}; extern "C" { pub fn puts(txt: *const c_char); ...
- (52)Wangdao.com第七天_字面量/变量_标识符_数据类型_数据的存储
JavaScript 字面量 和 变量 字面量:就是那些不可变的值,如1,2,100,2000,Infinity,NaN 变量: 变量,代表的当前随机分配的内存地址. 变量的值,是可变的,可以用来保存 ...
- (70)Wangdao.com第十一天_JavaScript 日期对象 Date
日期对象 Date 表示一个时间 Date 对象是 JavaScript 原生的时间库 它以1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天(单位为毫秒) 时间零点( ...
- (83)Wangdao.com第十七天_JavaScript 定时器
JavaScript 提供定时执行代码的功能,叫做 定时器(timer). 主要由 setTimeout() 和 setInterval() 这两个函数来完成.它们向任务队列添加定时任务 setTim ...
- (57)Wangdao.com第九天_JavaScript 对象的简介及分类
对象 引用数据类型. 对象是一种复合的数据类型,可以存储多个不同类型的变量. 以后我们看到的,只要不是String.Number.Boolean.Null.Undefined,那么就一定是 Objec ...
随机推荐
- Elasticsearch High Level Rest Client 发起请求的过程分析
本文讨论的是JAVA High Level Rest Client向ElasticSearch6.3.2发送请求(index操作.update.delete--)的一个详细过程的理解,主要涉及到Res ...
- MVC控制器返回一个list 视图接收
控制器 public ActionResult InfoFrame() { List<Users> list = new List<Users>(); if (Session[ ...
- Python3:OOP Demo
方便快速回顾Python的OOP语法 ###################### # 类的私有专有方法 # ###################### # __init__ : 构造函数,在生成对 ...
- Servlet中文件上传下载
1.文件下载: package FileUploadAndDown; import java.io.FileInputStream; import java.io.IOException; impor ...
- ASP.NET Core之依赖注入
本文翻译自:http://www.tutorialsteacher.com/core/dependency-injection-in-aspnet-core ASP.NET Core支持依赖注入,依赖 ...
- 小程序引入百度api天气预报
先看下最终的效果(默认可以获得未来三天数据): 第一:首先准备条件(必须): 1.小程序已认证,有appID 2.必须把https://api.map.baidu.com 添加到小程序的合法域名列表中 ...
- klearn.preprocessing.PolynomialFeatures学习
多项式特征处理 class sklearn.preprocessing.PolynomialFeatures(degree=2, interaction_only=False, include_bia ...
- 在普通js文件里引入vue实例的方法
首先是我是写了一个 Loading 插件然后 是挂在打vue.prototype 原型上的. 在main.js中use使用了这个插件. 至此vue原型是就被我挂上 $loadding方法了. 然后我想 ...
- CSS之分组选择器和嵌套选择器
分组选择器, 将一个样式应用于多个类,或者标签啥的 每个选择器用逗号隔开 <!DOCTYPE html> <html> <head> <meta charse ...
- Peer-to-Peer (P2P) communication across middleboxes
Internet Draft B. FordDocument: draft-ford-midcom- ...