今天让我们站在语言的高度来看一下Javascript都有点什么。因为是全局性的俯瞰,所以不针对细节作详细的讲解。

先来看一张图吧:

解释一下:

核心(ECMAScript):定义了脚本语言的所有对象,属性和方法

文档对象模型(DOM):HTML和XML应用程序接口

浏览器对象模型(BOM):对浏览器窗口进行访问操作

现在来具体的讲一个各个成分:

关于ECMAScript

ECMAScript的工作是定义语法和对象,从最基本的数据类型、条件语句、关键字、保留字到异常处理和对象定义都是它的范畴。

在ECMAScript范畴内定义的对象也叫做原生对象。

其实上它就是一套定义了语法规则的接口,然后由不同的浏览器对其进行实现,最后我们输写遵守语法规则的程序,完成应用开发需求。

关于DOM

根据DOM的定义(HTML和XML应用程序接口)可知DOM由两个部分组成,针对于XML的DOM即DOM Core和针对HTML的DOM HTML。

那DOM Core 和DOM HTML有什么区别与联系呢?

DOM Core的核心概念就是节点(Node)。DOM会将文档中不同类型的元素(这里不元素并不特指<div>这种tag,还包括属性,注释,文本之类)都看作为不同的节点。

节点结构图

上图描述了DOM CORE的结构图,比较专业,来看一个简单的:

1 <div id="container">
2     <span>hello world</span>
3   </div>

来看一下这段代码在标准浏览器里的DOM表现:

div和span元素被展现成了一个元素节点,对应到节点结构图中的Element元素

"hello world"和div与span之间的间隔,被展现成了文本节点,对应到节点结构图中的CharacterDate元素

DOM CORE在解析文档时,会将所有的元素、属性、文本、注释等等视为一个节点对象(或继承自节点对象的对象,多态、向上转型),根据文本结构依次展现,最后行成了一棵"DOM树"

DOM HTML的核心概念是HTMLElement,DOM HTML会将文档中的元素(这里的元素特指<body>这种tag,不包括注释,属性,文本)都视为HTMLElement。而元素的属性,则为HTMLElement的属性。

再来看一个示例:

从Node接口提供的属性

myElement.attributes["id"].value;很明显myElement.attributes["id"]返回一个对象.value是得到对象的value属性

Element实现的方法返回

myElement.getAttributes("id");很明显此时id现在只是一个属性而已,这只是一个得到属性的操作。

其实上DOM Core和DOM html的外部调用接口相差并不是很大,对于html文档可以用DOM html进行操作,针对xhtml可以用DOM Core。

关于BOM

老规则,先来一张图:

BOM与浏览器紧密结合,这些对象也被称为是宿主对象,即由环境提供的对象。

这里要强调一个奇怪的对象Global对象,它代表一个全局对象,Javascript是不允许存在独立的函数,变量和常量,如果没有额外的定义,他们都作为Global对象的属性或方法来看待.像parseInt(),isNaN(),isFinite()等等都作为Global对象的方法来看待,像Nan,Infinity等"常量"也是Global对象的属性。像Boolean,String,Number,RegExp等内置的全局对象的构造函数也是Global对象的属性.但是Global对象实际上并不存在,也就是说你用Global.NaN访问NaN将会报错。实际上它是由window来充当这个角色,并且这个过程是在javascript首次加载时进行的。

本文转自艾伦 Aaron博客园博客,原文链接:http://www.cnblogs.com/aaronjs/archive/2011/09/05/2167521.html,如需转载请自行联系原作者

javascript全局观相关推荐

  1. 【转载】如何学JavaScript?前辈的经验之谈

    鉴于时不时,有同学私信问我怎么学前端的问题. 这里统一回复一下,如下次再遇到问我此问题同学,就直接把本文链接地址发给你了. 首先说句题外话.关于有人管我叫大神的事情. 个人感觉这跟你买东西时,人家管你 ...

  2. 怎么学JavaScript?

    作者:小不了 链接:https://zhuanlan.zhihu.com/p/23265155 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 鉴于时不时,有同学私信 ...

  3. 老姚浅谈:怎么学JavaScript?

    大家好,我是若川.当初我就是看本文深受启发,开始看书读源码.所以现在联系了作者@老姚 授权转载分享给大家.我按照文中的做法敲完了<JavaScript语言精粹 修订版>,在2017年7月2 ...

  4. 最全解析如何正确学习JavaScript指南,必看!

    划重点 鉴于时不时,有同学私信问我:怎么学前端的问题.这里统一回复一下,如下次再遇到问我此问题同学,就直接把本文链接地址发给你了. "前端怎么学"应该因人而异,别人的方法未必适合自 ...

  5. 大神教你学JavaScript

    鉴于时不时,有同学私信问我怎么学前端的问题. 这里统一回复一下,如下次再遇到问我此问题同学,就直接把本文链接地址发给你了. 首先说句题外话.关于有人管我叫大神的事情. 个人感觉这跟你买东西时,人家管你 ...

  6. 前端网老姚浅谈:怎么学JavaScript?

    作者:小不了 链接:https://zhuanlan.zhihu.com/p/23265155 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 鉴于时不时,有同学私信 ...

  7. 统一回复《怎么学JavaScript?》

    作者:小不了 链接:https://zhuanlan.zhihu.com/p/23265155 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 鉴于时不时,有同学私信 ...

  8. 如何学JavaScript?前辈的经验之谈

    这篇文章主要介绍了如何学JavaScript?前辈的经验之谈,也就是怎么学前端的问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 正题开始,前端怎么学,应该因人而异,别人的方法未必适合自己. 就 ...

  9. 怎么学 JavaScript?

    新媒体管家 来自:前端网,作者:老姚www.qdfuns.com/notes/17398/d3f6dd40e2d3ff15b209810dfa98be0b:storey-71.html 鉴于时不时,有 ...

最新文章

  1. 无线路由器结合Windows Radius Server实现通过域账户连接公司无线网络
  2. 学计算机买笔记本是i5 i7,i7不一定比i5好!懂电脑的人选择买i5,而不是i7,究竟怎么回事?...
  3. 硬链接、软链接的区别
  4. redis编译安装:make 的新错误--collect2: ld returned 1 exit status
  5. 诈骗者如何伪造电子邮件地址,以及如何分辨
  6. oracle utl inaddr,oracle11g之ACL拙见
  7. gcc中使用rpath指定优先搜索路径
  8. ExpandableListView说明及其用法
  9. 使用OEM复制数据库
  10. c语言项目研发实训,C语言实训项目表V1.0.doc
  11. 实时vad(替换webrtcvad)
  12. avi文件是什么?avi文件格式介绍
  13. 城市道路井盖安全监测系统 opencv
  14. 光学心率传感器工作原理
  15. 【语音智能平台】京东Alpha VS 讯飞开放平台 (一)
  16. 设计模式 之 结构型模式
  17. 使用 advanced installer 为 winform 做自动更新
  18. Panoply地理网格绘制软件
  19. 高防IP的特点跟高防CDN的优势
  20. C# 兼容操作office或wps,打开excel文件

热门文章

  1. linux 导入txt_手机混用闪存到底是真是假:教你查手机闪存型号|闪存|手机|linux|ufs|zip...
  2. axi dma cyclic mode调试完成
  3. 关于对 linux系统的物理内存访问 /dev/mem
  4. 东大20春计算机应用基础在线作业1答案,东大20春学期《计算机应用基础》在线平时作业1答案...
  5. i基准指令集 mips_mips addiu
  6. dll文件是什么语言编写的_Win7系统当中libeay32.dll文件丢失的解决方法是什么?...
  7. python中rand和randn_rand、randn、randi区别及用法
  8. matlab pause
  9. Verilog设计实例(8)按键防抖设计之软件防抖
  10. 【 MATLAB】 Two-step WLS algorithm Simulation of TOA - Based Positioning