JavaScript宿主对象和原生对象的区别

42 篇文章 1 订阅

写在前面

        晚上好呀朋友们。今天不聊代码,今天讲些理论知识。

原生对象

        ECMA-262把本地对象(native object)定义为“独立于宿主环境的ECMA Script实现提供的对象”。

        “本地对象”包含:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URlError。

        由此可以看出,本地对象就是ECMA-262定义的类(引用类型)。

内置对象

        ECMA-262把内置对象(built-in object)定义为“由ECMAScript实现提供的、独立于宿主环境的所有对象,在ECMAScript程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已经被实例化了。

        同样是“独立于宿主环境”。根据定义我们似乎很难分清“内置对象”与“本地对象”的区别。而ECMA_262只定义了两个内置对象,即Global和Math(它们也是本地对象,根据定义,每个内置对象都是本地对象)。如此就可以理解了。内置对象是本地对象的一种。

宿主环境

        何为“宿主对象”?主要在这个“宿主”的概念上。ECMAScript中的“宿主”当然就是我们网页的运行环境,即“操作系统”和“浏览器”。

        所有非本地对象都是宿主对象(host object),即由ECMAScript实现的宿主环境提供的对象。所有的BOM和DOM都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白了就是,ECMAScript官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通过ECMAScript程序创建的对象。

写在最后

        一天一个新知识~下期见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值