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

1、本地对象

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

再来看一下,“本地对象”包含哪些内容:

Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError。

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

2、内置对象

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

同样是“独立于宿主环境”。根据定义我们似乎很难分清“内置对象”与“本地对象”的区别。而ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都是本地对象)。

如此,内置对象是本地对象的一种。而其包含的两种对象中,Math对象我们经常用到,可这个Global对象是啥东西呢?

Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在,但大家要清楚,在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。类似于isNaN()、parseInt()和parseFloat()方法等,看起来都是函数,而实际上,它们都是Global对象的方法。而且Global对象的方法还不止这些。

 3、宿主对象

由ECMAScript实现的宿主环境提供的对象,可以理解为:浏览器提供的对象。所有的BOM和DOM都是宿主对象。

4、自定义对象

根据JS的对象扩展机制,用户可以自定义JS对象。

总结:

JS中,可以将对象分为“内部对象”、“宿主对象”和“自定义对象”三种。

1,内部对象

js中的内部对象包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。

其中Global和Math这两个对象又被称为“内置对象”,这两个对象在脚本程序初始化时被创建,不必实例化这两个对象。

 

2.宿主对象

宿主对象就是执行JS脚本的环境提供的对象。对于嵌入到网页中的JS来说,其宿主对象就是浏览器提供的对象,所以又称为浏览器对象,如IE、Firefox等浏览器提供的对象。不同的浏览器提供的宿主对象可能不同,即使提供的对象相同,其实现方式也大相径庭!这会带来浏览器兼容问题,增加开发难度。

浏览器对象有很多,如Window和Document等等。

3.自定义对象

顾名思义,就是开发人员自己定义的对象。JS允许使用自定义对象,使JS应用及功能得到扩充

最新文章

  1. iOS-RunTime
  2. 帝国CMS【操作类型】说明详解
  3. BZOJ 3674: 可持久化并查集加强版
  4. 教你用Cocosdx导出安卓安装文件(.apk)(一)
  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请
  6. PHP与memcache和memcached以及安装使用
  7. POJ 1987 BZOJ 3365 Distance Statistics 树的分治(点分治)
  8. [LeetCode] Search for a Range [34]
  9. C# LogHelper
  10. python学习===从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。
  11. 利用CocoaHTTPServer实现wifi局域网传输文件到iphone
  12. 011-MAC 设置环境变量path的几种方法
  13. css颜色的五种表示方法
  14. mysql开启调试日志general_log开启跟踪日志
  15. ubuntu 禁用自带的nouveau显卡驱动,安装NVIDIA显卡驱动
  16. tft屏图像文字一起显示
  17. 解决 引入本地jar包后 maven无法编译的问题及部署war包缺失本地jar包的问题
  18. SpringJMS解析--使用示例
  19. 事件总线demo
  20. OpenAPI安全防护

热门文章

  1. 【转发】Webdriver使用自定义Firefox Profile运行测试
  2. Django时间与时区设置问题
  3. System.Web.Caching.Cache类 缓存 各种缓存依赖(转)
  4. URL重写html后Html文件打不开解决办法
  5. EF那点事
  6. 【转载】 历届Turing奖得主名单
  7. 最新sublime Text3 注册激活码
  8. 【SSH网上商城项目实战26】完成订单支付后的短信发送功能
  9. visualvm 插件 visual gc 使用介绍
  10. sprintf和sscanf