理解Javascript_03_javascript全局观

 更新时间:2010年10月11日 23:02:27   作者:  
今天让我们站在语言的高度来看一下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的结构图,比较专业,来看一个简单的:

复制代码 代码如下:

<div id="container">
<span>hello world</span>
</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首次加载时进行的。

好了,好了,就到这吧,本来还有一部分,算了,以后另开一节再说吧。

相关文章

  • JavaScript设计模式之代理模式详解

    JavaScript设计模式之代理模式详解

    这篇文章主要为大家详细介绍了JavaScript设计模式之代理模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • JavaScrpt的面向对象全面解析

    JavaScrpt的面向对象全面解析

    javascript面向对象知识很广泛,想深入理解需要花费一些时间,本文给大家介绍了js面向对象的创建及相关属性介绍,感兴趣的小伙伴一起学习吧
    2017-05-05
  • 微信小程序使用component自定义toast弹窗效果

    微信小程序使用component自定义toast弹窗效果

    这篇文章主要介绍了微信小程序使用component自定义toast弹窗效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • 基于JavaScript实现自定义滚动条

    基于JavaScript实现自定义滚动条

    这篇文章主要为大家详细介绍了基于JavaScript实现自定义滚动条,可以直接使用的滚动条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 利用百度地图API获取当前位置信息的实例

    利用百度地图API获取当前位置信息的实例

    下面小编就为大家带来一篇利用百度地图API获取当前位置信息的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望对大家有所帮助
    2017-11-11
  • 微信小程序 scroll-view 实现锚点跳转功能

    微信小程序 scroll-view 实现锚点跳转功能

    这篇文章主要介绍了微信小程序 scroll-view 实现锚点跳转功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • js实现方块上下左右移动效果

    js实现方块上下左右移动效果

    这篇文章主要为大家详细介绍了js实现方块上下左右移动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 一文详解DOM的概念和常用操作

    一文详解DOM的概念和常用操作

    本文详细介绍了DOM的概念和常用操作,文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容,感兴趣的朋友可以参考阅读本文
    2023-04-04
  • JavaScript定义函数的三种实现方法

    JavaScript定义函数的三种实现方法

    这篇文章主要介绍了JavaScript定义函数的三种实现方法的相关资料,希望通过本文大家能够掌握三种定义函数的方法,需要的朋友可以参考下
    2017-09-09
  • Javascript Symbol原理及使用方法解析

    Javascript Symbol原理及使用方法解析

    这篇文章主要介绍了Javascript Symbol原理及使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10

最新评论