JavaScript对象类别划分(原生对象、内置对象、宿主对象)

原生对象(native object)

原生对象也可以叫做本地对象或者内部对象。ECMA-262 把原生对象(native object)定义为 " 独立于宿主环境的 ECMAScript 实现提供的对象 "。所以每一种宿主环境都可以使用原生对象。

JavaScript中的原生对象有Object、Function、Array、String、Boolean、Math、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError和Global。

 

内置对象(built-in object)

ECMA-262 把内置对象(built-in object)定义为 " 由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现 "。前半部分和原生对象很像,实际上内置对象也都是原生对象,区别在于后半句 "在 ECMAScript程序开始执行时出现",这意味着开发者无需使用new +构造函数创建,而是JavaScript引擎初始化的时候就被创建,可以直接使用。 目前定义的内置对象只有两个:Global  Math 

内置对象是原生对象的一种,主要区别在于是否需要实例化。在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。举个例子,在使用原生对象时,我们一般都需要var obj = new Object() 或字面量 var obj = {} 明确实例化生成一个实例再去调用Object的某个方法 obj.toSting()。但如果是内置对象Global和Math,我们只需Math.floor(2.4)直接调用,不需要再进行实例化。

 

宿主对象(host object)

首先要明确什么是宿主,ECMA仅是一套规范,也就是指定的一套编程规则。但是规则毕竟是规则,如果要发挥作用,必须要有平台或者说环境,这就是ECMA的宿主。

 ECMAScript中的 "宿主" 当然就是我们网页的运行环境,即 "操作系统" 和 "浏览器"。所有非原生对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。

所有的 BOM 和 DOM 对象都是宿主对象,它们都属于window对象的子对象。不同的宿主环境所展示的内容不同。它不是 ECMAScript 官方提供的,而是浏览器这个宿主为了方便开发者而加上去的,所以实际上所有非原生对象都是宿主对象

 

文章每周持续更新,可以微信搜索「 前端大集锦 」第一时间阅读,回复【视频】【书籍】领取200G视频资料和30本PDF书籍资料

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Demi

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值