• JavaScript的本地对象、内置对象、宿主对象


    首先解释下宿主环境:一般宿主环境外壳程序创建与维护,只要能提供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应用及功能得到扩充

  • 相关阅读:
    Flask框架基础4
    Flask框架基础3
    Flask框架基础2
    Flask框架基础1
    项目上线流程-Django后端+vue前端
    Git操作
    DRF-jwt认证
    四种方式实现单例模式
    drf框架4-views视图家族操作
    drf框架3-ModelSerializer操作序列化与反序列化
  • 原文地址:https://www.cnblogs.com/manshufeier/p/9415836.html
Copyright © 2020-2023  润新知