js高级---本地对象、内置对象、宿主对象

名词参考:
原生对象:也叫内部对象、本地对象、native object
内置对象:Build-in object
宿主对象:host object

ECMA-262 定义
原生对象:独立于宿主环境的ECMAScript实现提供的对象。与宿主无关,在javascript(远景浏览器)、nodejs(node平台)、jscript(ie浏览器)、typescript(微软平台)等等中均有这些对象。简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。在运行过程中动态创建的对象,需要new
内置对象:由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现,即在引擎初始化阶段就被创建好的对象。这意味着开发者不必明确实例化内置对象,它已被实例化了
宿主对象:即由 ECMAScript 实现的宿主环境提供的对象,包含两大类,一个是宿主提供,一个是自定义类对象,ECMAScript官方未定义的对象都属于宿主对象,所有非本地对象都是宿主对象。宿主提供对象原理--->由宿主框架通过某种机制注册到ECscript引擎中的对象,如宿主浏览器(以远景为参考)会向ECscript注入window对象,构建其实现javascript。。

内容
原生对象:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
内置对象:Global(全局对象)、Math
宿主对象:---->在浏览器中window对象以及其下边所有的子对象(如bom、dom等等),在node中是globla及其子对象,也包含自定义的类对象。
其它对象:全局对象--->是内置对象的一个。自定义对象--->它属于宿主对象

它们之间的关系
本地对象与内置对象:原生包含内置,内置是原生的一个子集。
宿主对象:内置对象的Global,就是宿主的顶层对象,如在浏览器中是window、在nodejs中是global

特别说明:
内置对象之Global
Global即为全局对象,Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在!
在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。
类似于isNaN()、parseInt()和parseFloat()方法等,看起来都是函数,而实际上,它们都是Global对象的方法。
而且Global对象的方法还不止这些。具体参考http://www.w3school.com.cn/jsref/jsref_obj_global.asp

而且根据我目前没有定论的推断,Global对象与宿主有关,是宿主的顶层对象。比如在javascript中,Global对象即为window对象,以下代码即可测试出

<script>
    var str=‘hello‘;
    //用宿主对象去 调用内置对象的函数
    console.log(window.isNaN(str))
</script>

由此可以推测出,当宿主为nodejs时候,nodejs的顶层对象是global,那么这样肯定不会报错--global.isNaN(str)

拓展方法内容
无论是什么对象,均可以通过prototype进行功能拓展。

时间: 2024-08-01 14:32:51

js高级---本地对象、内置对象、宿主对象的相关文章

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

分类:Unity.C#.VS2015 创建日期:2016-04-02 一.基本概念 Unity已经内置了一些基本的3D对象,利用这些内置的3D对象就可以直接构建出各种3D模型(当然,复杂的三维模型还需要借助专业建模软件来完成). Unity 5.3.4内置的3D对象有: Cube:立方体 Sphere:球体 Capsule:胶囊体. Cylinder:圆柱体. Plane:平面. Quad:四方格. Ragdoll:布娃娃系统. Terrain:地形. Tree:树. Wind Zone:风.

JS中的日期内置函数

用JS中的日期内置函数实现在页面显示:“今天是:2013年9月26日14:32:45”. var date=new Date(Date.parse('9/26/2013 14:32:45'));   写出JS中声明对象的三种方法. Var obj={ name:名字, Say:function(){ Alert(‘sssss’); } }     Var obj=new Object();     Var obj={} Obj.name=’名字’; Obj.say=function(){ Ale

JavaScript 参考手册——javascript本地和内置对象、BOM、DOM

本部分提供完整的 JavaScript 参考手册: JavaScript 本地对象和内置对象 Browser 对象(BOM) HTML DOM 对象 JavaScript 对象参考手册 本参考手册描述每个对象的属性和方法,并提供实例. Array Boolean Date Math Number String RegExp Global Browser 对象参考手册 本参考手册描述每个对象的属性和方法,并提供实例. Window Navigator Screen History Location

js学习---常用的内置对象(API)小结 :

内置对象(API): 日期 Date: getFullYear() 返回完整的4位的年份  如:2016 getMonth()    返回月份,从0开始 getDate()   返回当前月的第几天,当月的几号 getHours()   返回0-23的小时数字 getMinutes()  返回0-59的分钟数字 getSeconds()  返回0-59的秒数字 getTime()    返回毫秒数 getMilliseconds()  返回毫秒数字 getDay()       返回星期几 Arr

ES6新特性:Javascript中内置的延迟对象Promise

Promise的基本使用: 利用Promise是解决JS异步执行时候回调函数嵌套回调函数的问题, 更简洁地控制函数执行流程: 通过new实例化Promise,  构造函数需要两个参数, 第一个参数为函数执行成功以后执行的函数resolve, 第二个函数为函数执行失败以后执行的函数reject: new Promise(function(resolve , reject) { }); 通过Promise,我们把回调函数用线性的方式写出来,而不是一层套一层, 这个函数有四层回调: fn("args&

day②:一切皆对象+内置方法+int

一.python基础 对于python,一切事物都是对象,对象基于类创建. 例子: li=[11,22,33] li.append(44) 对象所具备的方法,例如:li列表的增删改查,都不是对象自己所有的,它只是去到这个类里面的方法执行的! 二.数据内型的内置方法 type() 查看对象的类型 dir(类型名) 查看类中提供的所有功能 help(类型名) 查看类中所有详细的功能 help(类型名.功能名) 查看类中某功能的详细 关于dir(),之后,你会看到两边带下划线和不带下划线的方法: __

Lucene中内置常用Query对象

以下这几种lucene内置查询对象,不过在实际的项目开发中,这种查询方式应用的不多.一般用QueryParser去获取查询对象.因为QueryParser内部基本实现了所有的内置查询对象. 这是最常见的QueryParse的写法 /** * 通过QueryParser去获取查询对象 * * @throws ParseException */ @Test public void searchByQueryParse() throws ParseException { // 1创建QueryPars

JSP的 内置九大对象

我们以前用到的对象都是用 new 调用构造方法获得的,而在 JSP 中提供了 9 个不需要 new 实例化的对象,我们把它叫做内置对象或者隐藏对象,它们分别是 pageContext.request.response.session.application.config.out.page.exception. 1. request 内置对象 zaiWeb开发中, request 内置对象十分重要,用到的频率很多. request 对象的作用:接收客户端发送来的信息. 它的方法主要有: 2. re

【学习】js学习笔记:内置顶层函数eval()的兼容用法

今天学了一个内置顶层函数,eval();其作用是将字符串转换成javascript命令执行,但必须符合语法,否则会报错. 如果写成window.eval(),则其定义的变量会在全局生效. 但是,在IE中,(测试为IE8及以下), window.eval()定义的变量不能在全局作用域生效,而ie有自己的一个函数为window.execScript()可以做到同样的效果.于是,在实际应用中,需要一个判断的函数,分别使用.如下: function evals(str){ if(typeof str!=