今天让我们站在语言的高度来看一下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. 百度李彦宏:人工智能是万物命脉
  2. Mac OS X Terminal 101:终端使用初级教程
  3. apache2.4.39 php,win7 配置AMP环境(apache2.4.39 + php7.1.28)
  4. JS 闭包 正则(1)
  5. SQL Server中的快照隔离
  6. sklearn库的学习入门
  7. 华三 h3c Ftp、Telnet配置
  8. 包邮!送55本《大数据浪潮之巅:新技术商业制胜之道》
  9. 南京大学计算机复试离散数学,南京大学计算机复试线 历年南京大学计算机考研复试离散数学题集.doc...
  10. ERP原理及应用教程-第二章
  11. 农夫山泉赴港上市,迷之操作暗藏“算计”
  12. Java 金额转换帮助类(元转分)
  13. 课程表里的表表机器人_机器人课程表
  14. layui附件上传组件,实现layui附件上传组件抽取并改造,基于thymeleaf组件化
  15. Windows server 2016部署WDS服务
  16. PS通道高反差保留计算人物磨皮技巧
  17. easypoi的excel导出单元格只能选下拉选项工具类
  18. java打印输出万年历_用Java编程输出万年历的功能实现
  19. 2019年6月4日 VIVO提前批笔试 题目3
  20. PHP图片拼接util

热门文章

  1. java 显示c控制台程序窗口,Windows-如何清除C中的控制台屏幕?
  2. 内核ioread,iowrite volatie 的正确使用
  3. mysql 乱字符_JDBC ODBC MYSQL中文出现乱字符 解决
  4. pythonshellnohup_python nohup 实现远程运行不宕机操作
  5. 【 Notes 】Positioning system classification
  6. bootstrap4 调整元素之间距离
  7. Hadoop(十)Hadoop IO之数据完整性
  8. 阿里COO张勇:不以数字衡量双11 海淘阿里有平台优势
  9. 浅析I/O处理过程与存储性能的关系
  10. 2008年上半年程序员考试试题分析