1、内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集;而后者包括了一些在运行过程中动态创建的对象。

2、引擎扩展对象是一个并不太大的集合,一般来说比较确定,它们也属于引擎的原生对象(但不属于ECMA规范的原生对象)。

3、宿主对象不是引擎的原生对象,而是由宿主框架通过某种机制注册到JavaScript引擎中的对象。

4、一些宿主会把自己提供的对象/构造器也称为“原生对象”,例如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 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。

原生对象、内置对象、宿主对象的区别相关推荐

  1. JavaScript 对象增删改查 + 遍历对象+内置函数 + 随机对象

    red red 1.什么是对象? 对象是JavaScript 里的一种数据类型:可以理解为是一种无序的数据集合:用来描述某个事物,例如描述一个人信息 2.对象怎么声明? let 对象名 = {} 例如 ...

  2. “约见”面试官系列之常见面试题之第六十八篇之本地对象 内置对象 宿主对象(建议收藏)

    首先解释下宿主环境:一般宿主环境由外壳程序创建与维护,只要能提供js引擎执行的环境都可称之为外壳程序.如:web浏览器,一些桌面应用系统等.即由web浏览器或是这些桌面应用系统早就的环境即宿主环境. ...

  3. JS-内置对象内置构造函数事件-拖拽轮播图无缝滚动

    内置对象&内置构造函数 日期时间格式 // 创建一个当前时刻的日期时间对象 var date = new Date(); // 获取date对象中的年月日时分秒 var y = date.ge ...

  4. 【Unity】3.1 利用内置的3D对象创建三维模型

    分类:Unity.C#.VS2015 创建日期:2016-04-02 一.基本概念 Unity已经内置了一些基本的3D对象,利用这些内置的3D对象就可以直接构建出各种3D模型(当然,复杂的三维模型还需 ...

  5. JavaScript对象与内置对象——内置对象(二)

    内置对象 JavaScript中的对象分为3种:自定义对象.内置对象,浏览器对象 前两种对象是js基础内容,属于ECMAScript;的三个浏览器对象属于我们JS独有的. JavaScript提供多个 ...

  6. JavaScript内置方法-Date对象

    Date对象 >介绍 是一个构造函数,使用时需要new,实例化 主要看常用方法 console.log(new Date()); //返回电脑当前的时间 console.log(new Date ...

  7. Python_List对象内置方法详解

    目录 目录 前言 软件环境 列表List 修改列表的元素 插入列表元素 extend 将序列中的元素迭代的附加到list中 insert 在指定的索引号中插入一个元素 删除列表元素 del 删除Lis ...

  8. Python_序列对象内置方法详解_String

    目录 目录 前言 软件环境 序列类型 序列的操作方法 索引调用 切片运算符 扩展切片运算符 序列元素的反转 连接操作符 重复运算符 成员关系符 序列内置方法 len 获取序列对象的长度 zip 混合两 ...

  9. 内置类和对象锁改变 笔记记录

    当内置类是私有的,若实例化该类与内置类 在一个包下可以实例化.若不在一个包下要实例化,需要将内置类改为public package com.inner; public class PublicClas ...

  10. JavaScript基础 -- js常用内置方法和对象

    JS中常用的内置函数如下: 1.eval(str):计算表达式的结果. 2.parseInt(str,n):将符串转换成整数数字形式(可指定几进制). 3.parseFloat(str):将字符串转换 ...

最新文章

  1. 聊聊flink JobManager的heap大小设置
  2. win32 api setwindowlong 第2个参数_FME与MapBox 01:等时圈(Isochrone)API
  3. onenote怎么同步到电脑_详解onenote保存与同步④:本地笔记奇葩的丢失经历
  4. libsvm 使用介绍
  5. python logger.debug_Python logger模块
  6. 查看mysql 中建立的表空间_mysql 表空间及索引的查看
  7. 微博html天涯吴奇隆刘诗诗,吴奇隆深夜微博晒爱心,为刘诗诗庆生,网友:撒了一大把狗粮...
  8. Java去除字符中的空格(trim)
  9. my java note -------String 类的实例化
  10. Confluence 6 恢复一个空间
  11. jQuery 的第一个例子
  12. 微软MSDN,window10原版系统下载,操作系统msdn下载,microsoft office原版下载,www.msdn.itellyou.cn
  13. 梦幻西游三维版获取服务器信息,梦幻西游三维版服务器等级提升
  14. OJ每日一练——鸡兔同笼问题
  15. Ubuntu 11.04下thrift-0.8.0的安装 - Linux - 红黑联盟
  16. DRM2.0 的身份认证过程
  17. python中的转义字符
  18. 显卡属于计算机主机还是外设,计算机硬件组成及作用有哪些
  19. IOS开发之相机、相册页面英文问题
  20. LitsModer —— 开发日志(上)

热门文章

  1. 【xinput1_3.dll下载】xinput1_3.dll丢失怎么修复win10
  2. win7配置FTP服务器
  3. 晨光计算机开n次方,【三名工程】晓之以理,导之以行,动之以情——郑标名师工作室第一次网络研修记录...
  4. 虚拟服务器钟楼古城微博,最无聊中外钟楼微博走红
  5. Not_flushed_delayed_rows
  6. 耳穴减肥自身感受细节描述0422
  7. 世界上第一套电子表格软件 —— VisiCalc
  8. Python案例1—人民币与美元的汇率兑换V_5.0
  9. 计算机专业就业尴尬问题,计算机专业就业困境初探
  10. 《关于雪糕刺客与雪糕护卫激发中国人的创作灵感这件事》