一个完整的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 发展与简介的更多相关文章

  1. (51)Wangdao.com第七天_JavaScript 编写位置及输出语句

    JavaScript 编写位置 编写在html内部标签的属性中 不推荐使用,因为结构和行为耦合,不便于维护 主要有  <button onclick="alert('点我干哈!');& ...

  2. (53)Wangdao.com第七天_JavaScript 强制类型转换

    其他进制的数字 二进制    以 0b 开头的 Number 八进制    以 0 开头的 Number 十六进制    以 0x 开头的 Number 注意:无论是多少进制的数字,输出都是十进制 强 ...

  3. (54)Wangdao.com第七天_JavaScript 运算符

    JavaScript 运算符,也叫操作符 对一个或者多个值进行运算,都是会返回结果的. 比如: typeof    返回一个值的类型,返回值类型是字符串. 隐式类型转换: 任意值 = 任意值 + &q ...

  4. {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)

    {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)   Django基础七之 ...

  5. 50种编程语言,一句 “Hello, World”!展现编程语言七十年发展!

    mod confinment { use std::os::raw::{c_char}; extern "C" { pub fn puts(txt: *const c_char); ...

  6. (52)Wangdao.com第七天_字面量/变量_标识符_数据类型_数据的存储

    JavaScript 字面量 和 变量 字面量:就是那些不可变的值,如1,2,100,2000,Infinity,NaN 变量: 变量,代表的当前随机分配的内存地址. 变量的值,是可变的,可以用来保存 ...

  7. (70)Wangdao.com第十一天_JavaScript 日期对象 Date

    日期对象 Date 表示一个时间 Date 对象是 JavaScript 原生的时间库 它以1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天(单位为毫秒) 时间零点( ...

  8. (83)Wangdao.com第十七天_JavaScript 定时器

    JavaScript 提供定时执行代码的功能,叫做 定时器(timer). 主要由 setTimeout() 和 setInterval() 这两个函数来完成.它们向任务队列添加定时任务 setTim ...

  9. (57)Wangdao.com第九天_JavaScript 对象的简介及分类

    对象 引用数据类型. 对象是一种复合的数据类型,可以存储多个不同类型的变量. 以后我们看到的,只要不是String.Number.Boolean.Null.Undefined,那么就一定是 Objec ...

随机推荐

  1. springBoot多数据源(不同类型数据库)项目

    一个基于springboot的多数据源(mysql.sqlserver)项目,先看看项目结构,注意dao层 多数据源mysql配置代码: package com.douzi.robotcenter.c ...

  2. Entity Framework入门教程(3)---EF中的上下文简介

    1.DbContext(上下文类) 在DbFirst模式中,我们添加一个EDM(Entity Data Model)后会自动生成一个.edmx文件,这个文件中包含一个继承DbContext类的上下文实 ...

  3. java对象在内存中的结构

    在HotspotJVM中,32位机器下,Integer对象的大小是int的几倍? 我们都知道在java语言规范已经规定了int的大小是4个字节,那么Integer对象的大小是多少呢?要知道一个对象的大 ...

  4. 让iframe自适应高度-真正解决

    需求:实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同时出现滚动条的现象. (需要只有iframe出现滚动条) 本人一开始这么写:会造成只有主页面加载是设定 ...

  5. maven 分隔环境

    在pom.xml 上 添加 把要分隔的环境 文件 弄成这样 打包 mvn clean package -Dmaven.test.skip=true -P+环境名 例子:mvn clean packag ...

  6. 通过go-ethereum源码看如何管理项目

    今天抽空看了下go-ethereum项目的源码 ( https://github.com/ethereum/go-ethereum ),其中 ethereum 是github下的一个帐号.go-eth ...

  7. MongoDB学习笔记(转)

    MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...

  8. 实现JWT刷新机制以及让过期时间更精确

      借助accessToken和refreshToken实现   accessToken控制刷新间隔,refreshToken控制最长过期时间   Min过期时间 = refreshToken过期时间 ...

  9. 【linux】awk相关

    按字段相加文本内容 a 3 b 4 c 5 a 8 d 2 c 6 将上面内容中字段相同的数据相加 awk -F ' ' '{sum[$1]+=$2}END{for(i in sum){print i ...

  10. 【转载】Linux启动初始化配置文件浅析(解决source /etc/profile重启后就失效?)

    1)/etc/profile   登录时,会执行. 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. (2)/ect/bashrc   Ubuntu没有此文件,与之对应的是/ect/bash. ...