JS中各种对象关系
一张图让你看懂javascript各类型的关系
这个图来自于《JavaScript语言精髓与编程实践》第三章P184页。最近在改第二版,这张图重做了,需要的可以对照着看。
此外,补充一下图中用到的概念:
1、内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集;而后者包括了一些在运行过程中动态创建的对象。
2、引擎扩展对象是一个并不太大的集合,一般来说比较确定,它们也属于引擎的原生对象(但不属于ECMA规范的原生对象)。
3、宿主对象不是引擎的原生对象,而是由宿主框架通过某种机制注册到JavaScript引擎中的对象。
4、一些宿主会把自己提供的对象/构造器也称为“原生对象”,例如Internet Explorer 7就把它提供的XMLHttpRequest()称为原生的——与此相对的是在它的更早先版本中通过“new ActiveXObject('Microsoft.XMLHTTP')”这样的方法创建的对象。这种情况下,读者应注意到“宿主的原生对象”与“引擎的原生对象”之间的差异。
转自:http://www.w3cfuns.com/thread-5594427-1-1.html
JavaScript 本地对象、内置对象、宿主对象
本地对象(要NEW)
ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError、ActiveXObject(服务器方面)、Enumerator(集合遍历类)、RegExp(正则表达式)
由此可以看出,简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。
内置对象(不要NEW 直接引用——只有MATH GLOBAL)
ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。
同样是“独立于宿主环境”。根据定义我们似乎很难分清“内置对象”与“本地对象”的区别。而ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都是本地对象)。
如此就可以理解了。内置对象是本地对象的一种。而其包含的两种对象中,Math对象我们经常用到,可这个Global对象是啥东西呢?
Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在!在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。
类似于isNaN()、parseInt()和parseFloat()方法等,看起来都是函数,而实际上,它们都是Global对象的方法。而且Global对象的方法还不止这些。有关Global对象的具体方法和属性,感兴趣的同学可以看一下这里:JavaScript 全局对象参考手册
宿主对象(BOM DOM & 自定义对象)
何为“宿主对象”? ECMAScript中的“宿主”当然就是我们网页的运行环境,即“操作系统”和“浏览器”。所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。
所有的BOM和DOM对象都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白了就是,ECMAScript官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通过ECMAScript程序创建的对象。TML DOM 是 W3C 标准(是 HTML 文档对象模型的英文缩写,Document Object Model for HTML)。
HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法。
通过 DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。
DHTML DOM 独立于平台和编程语言。它可被任何编程语言诸如 Java、JavaScript 和 VBScript 使用。
点击下面的链接,可获得更多关于如何使用 JavaScript 来访问和处理 DOM 对象的知识:
DOM对象:
Document代表整个 HTML 文档,用来访问页面中的所有元素。Anchor代表
<a> 元素。Area代表图像地图中的 <area> 元素。Base代表
<base> 元素。Body代表图像地图中的 <body> 元素。Button代表
<button> 元素。Event代表事件的状态Form代表
<form> 元素Frame代表 <frame> 元素Frameset代表
<frameset> 元素Iframe代表 <iframe> 元素Image代表
<img> 元素Input button代表 HTML 表单中的按钮Input
checkbox代表 HTML 表单中的选择框Input file代表 HTML 表单中的 fileupload 。Input
hidden代表 HTML 表单中的隐藏域。Input password代表 HTML 表单中的密码域。Input
radio代表 HTML 表单中的单选框。Input reset代表 HTML 表单中的重置按钮。Input
submit代表 HTML 表单中的确认按钮。Input text代表 HTML 表单中的文本输入域。Link代表
<link> 元素Meta代表 <meta> 元素Object代表一个
<Object> 元素Option代表 <option> 元素Select代表
HTML 表单中的选择列表。Style代表某个单独的样式声明。Table代表
<table> 元素。TableData代表 <td> 元素。TableRow代表
<tr> 元素。Textarea代表 <textarea> 元素。
BOM对象:(browser objects madel)
待补充。。。
总结
本地对象,就是那些官方定义好了的对象。内置对象是本地对象的一种,其只包含Global对象和Math对象。而宿主对象则是那些官方未定义,你自己构建的对象加上DOM和BOM对象组成的。
转自:https://blog.csdn.net/foamflower/article/details/9165691
相关推荐:
以上就是JS中各种对象关系 的详细内容,更多请关注其它相关文章!
上一篇: php中Array2xml类实现数组转化成XML实例
下一篇: 分享python流程控制函数总结