Zenos—JS渐进篇之什么玩意儿(二)

嗨!各位亲爱的小伙伴们,一周没见了。这个星期小编我实在是公务缠身,没有时间出来”三陪”。(陪学习,陪玩耍,陪聊天,别想歪了哈!)

小编我一想起来还没有带领大家共同进步,我就痛心疾首啊,这不冒着被老板骂的风险,上班时间给大家更新来了。

下面,我们接着上次的话题继续讲完整的Javascript的组成部分。都躲开,小编我要开始扔雷了!!!

话说东汉末年,javascript一分为三:

老大:核心(ECMAScript)

老二:文档对象模型(DOM

老三:浏览器对象模型(BOM)

这三者相守相望,互为臂使。但是呢,这三者是不同的:

我们先来看老大(ECMAScript)

老大(ECMAScript)为人比较桀骜不驯,他从来不与任何具体的浏览器绑定,实际上,它也没有提到用于任何用户输入输出的方法(这点与 C语言这家伙 不同,C语言这家伙需要依赖外部的库来完成这类任务),在史书上【ECMA-262 标准(第 2 段)】的描述如下:

“ECMAScript 可以为不同种类的宿主环境提供核心的脚本编程能力,因此核心的脚本语言是与任何特定的宿主环境分开进行规定的… …”

————以上内容均出自ECMA-262 标准(第 2 段),如有雷同,纯属巧合。

这段对老大的标准定义你看了是不是发懵,懵就对了,他奶奶的,小编我第一次看想把书撕了的想法都有,说这么专业,小编能听。。。嗯哼,小编我当然能听懂了,这智商不高的能听懂么!!啥叫宿主,你当你修仙小说哪!夺舍呀!

下面小编就给你具体解释一下下啦!先来说什么是宿主环境:

javascript是一门编程语言,它运行的环境是虚拟机(chrome是v8,别的浏览器也有),(虚拟机是什么点这里)这个虚拟机在javascript的运行时, 这个运行时本身就是javascript的宿主环境了,不过在浏览器端,也把浏览器称作它的宿主环境(虚拟机寄宿在浏览器内)。

经过小编一解释,是不是豁然开朗,有没有!别尖叫,别崇拜哥,含蓄一点哈!

实际上,Web 浏览器对于 ECMAScript 来说是一个宿主环境,但它并不是唯一的宿主环境。事实上,还有不计其数的其他各种环境(例如 Nombas 的 ScriptEase,以及 Macromedia 同时用在 Flash 和 Director MX 中的 ActionScript,这些橙色的字体你可以当做路人甲,替死乙,不必在意,不过,小编的话你要当主角来对待,热情一点,温柔一点,最好再哥:”哥,你咋这厉害呢”)可以容纳 ECMAScript 实现。那么 ECMAScript 在浏览器之外规定了些什么呢?

简单地说,ECMAScript 描述了以下内容:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 运算符
  • 对象

ECMAScript 仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基准,JavaScript 就是这样:

ECMAScript、JavaScript、ActionScript、ScriptEase

每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展,包含了 DOM 和 BOM(这俩兄弟在下面)。当然还有其他实现并扩展了 ECMAScript 的语言,例如 Windows 脚本宿主(Windows Scripting Host, WSH)、Macromedia 在 Flash 和 Director MX 中的 ActionScript,以及 Nombas ScriptEase。

  • 文档对象模型(DOM)

DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:

这段代码可以用 DOM 绘制成一个节点层次图:

DOM 节点层次图

DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点。

  • 浏览器对象模型(BOM)

IE 3.0 和 Netscape Navigator 3.0 提供了一种特性 – BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作。使用 BOM,开发者可以移动窗口、改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。使 BOM 独树一帜且又常常令人怀疑的地方在于,它只是 JavaScript 的一个部分,没有任何相关的标准。

BOM 主要处理浏览器窗口和框架,不过通常浏览器特定的 JavaScript 扩展都被看做 BOM 的一部分。这些扩展包括:

  • 弹出新的浏览器窗口
  • 移动、关闭浏览器窗口以及调整窗口大小
  • 提供 Web 浏览器详细信息的定位对象
  • 提供用户屏幕分辨率详细信息的屏幕对象
  • 对 cookie 的支持
  • IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象

由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。

好了,关于js,小编就介绍到这,有什么不足,还请大家多多指教哈!

版权属于: 三个前端 | 积累知识,分享经验,交流心得
原文地址: http://web3ge.com/archives/184
欢迎转载,请以链接形式注明原始出处及本声明。

Be the first to comment

发表评论