您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

javascript中宿主对象和原生对象的区别是什么

2024/6/2 19:08:16发布35次查看
区别:原生对象是独立于宿主环境的ecmascript实现提供的对象,即ecma-262定义的类(引用类型);而宿主对象是由ecmascript实现的宿主环境提供的对象,所有非原生对象都是宿主对象。
本教程操作环境:windows7系统、javascript1.8.5版、dell g3电脑。
内置(build-in)对象与原生(naitve)对象的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集;而后者包括了一些在运行过程中动态创建的对象。
引擎扩展对象是一个并不太大的集合,一般来说比较确定,它们也属于引擎的原生对象(但不属于ecma规范的原生对象)。
宿主对象不是引擎的原生对象,而是由宿主框架通过某种机制注册到javascript引擎中的对象。
一些宿主会把自己提供的对象/构造器也称为“原生对象”,例如internet explorer 7就把它提供的xmlhttprequest()称为原生的——与此相对的是在它的更早先版本中通过“new activexobject('microsoft.xmlhttp')”这样的方法创建的对象。这种情况下,读者应注意到“宿主的原生对象”与“引擎的原生对象”之间的差异。
一、原生对象
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 定义的类(引用类型)。
二、内置对象
ecma-262 把内置对象(built-in object)定义为“由 ecmascript 实现提供的、独立于宿主环境的所有对象,在 ecmascript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。
同样是“独立于宿主环境”。根据定义我们似乎很难分清“内置对象”与“原生对象”的区别。而ecma-262 只定义了两个内置对象,即 global 和 math (它们也是原生对象,根据定义,每个内置对象都是原生对象)。
如此就可以理解了。内置对象是原生对象的一种。而其包含的两种对象中,math对象我们经常用到,可这个global对象是啥东西呢?
global对象是ecmascript中最特别的对象,因为实际上它根本不存在!在ecmascript中,不存在独立的函数,所有函数都必须是某个对象的方法。
类似于isnan()、parseint()和parsefloat()方法等,看起来都是函数,而实际上,它们都是global对象的方法。而且global对象的方法还不止这些。
三、宿主对象
何为“宿主对象”? ecmascript中的“宿主”当然就是我们网页的运行环境,即“操作系统”和“浏览器”。所有非原生对象都是宿主对象(host object),即由 ecmascript 实现的宿主环境提供的对象。
所有的 bom 和 dom 对象都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白了就是,ecmascript官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通过ecmascript程序创建的对象。tml dom 是 w3c 标准(是 html 文档对象模型的英文缩写,document object model for html)。
html dom 定义了用于 html 的一系列标准的对象,以及访问和处理 html 文档的标准方法。
通过 dom,可以访问所有的 html 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。
【相关推荐:javascript学习教程】
以上就是javascript中宿主对象和原生对象的区别是什么的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product