关闭

javascript的本地对象,内置对象和宿主对象

时间: 2018-04-19阅读: 1937标签: 对象

名词参考:

原生对象:也叫内部对象、本地对象、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

内置对象:Global(全局对象)、Math 

宿主对象:有宿主提供的对象,在浏览器中window对象以及其下边所有的子对象(如bom、dom等等),在node中是globla及其子对象,也包含自定义的类对象。【何为“宿主对象”?  在web中,ECMAScript中的“宿主”当然就是我们网页的运行环境,即“操作系统”和“浏览器”。所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。】

全局对象:一般全局对象会有两个,一个是ecma提供的Global对象,一个是宿主提供。如在浏览器中是window、在nodejs中是global。【所以啊,在浏览器中全局对象是Global+window】,通常情况下ecma提供的Global对象对是不存在的,没有具体的对象,
查看window下,当前所有的成员,除了console.log(window),你还可以这么做,在chrome进行debug时候中有个scope,当前作用域,其中Global只显示了window所有的成员,并没有显示Ecma的Global,因为我没有找到Ecma提供的Global任何字段和函数



它们之间的关系

本地对象与内置对象:原生包含内置,内置是原生的一个子集。
宿主对象:内置对象的Global和宿主提供的一个全局对象,
本地对象为array obj regexp等可以new实例化
内置对象为gload Math 等不可以实例化的
宿主为宿主注入到全局的对象,如浏览器的window 等

特别说明:

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

拓展方法内容

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

打印浏览器的全局对象

打印自定义的对象,会显示出源码,但是打印全局对象,因为这些全局对象是程序自带的,是二进制编译的,所以无法显示出来源代码
它就只能给你‘native code’

<script>
    var myfc=function(){var a=123;}
    console.log(myfc)//浏览器全局对象之window下自定义的myfc函数
    console.log(alert)//浏览器全局对象之window的alert函数
    console.log(isNaN)//浏览器全局对象之Global的isNaN函数
</script>


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/675

ES6 之 对象的简写方式

简写有两条基本原则:同名的属性可以省略不写;对象中的方法中的 : function 可以省略不写;来看下下面这个例子我分别用ES5 和 ES6 的语法分别定义并声明了一个简单的学生对象

JavaScript的内置对象

内置对象:对象是由属性和方法组成的,使用点语法访问,数组用于存储若干数据,自动为每位数据分配下标,从0开始

JavaScript中的map()和forEach()有什么区别?

JavaScript中一些最受欢迎的功能可能是map和forEach。从ECMAScript 5(简称es5)开始,它们就开始存在了。在本文中,我将讨论它们之间的主要区别,并向你展示其用法的一些示例。

vue事件获取当前对象

currentTarget:返回其监听器触发事件的节点,就是你的点击事件绑定在哪一个元素上 ,arget:返回事件的目标节点(触发该事件的节点),就是你当前点击的是哪一个元素

FormData对象的使用

FormData类型是XMLHttpRequest 2级定义的,它是为序列化表以及创建与表单格式相同的数据提供便利。 作用:1.利用一些键值对来模拟一系列表单控件:即将form中的所有表单元素的name和value组装成一个queryString;2.异步上传二进制文件。

深入JS对象属性

属性决定JS中对象的状态,本文章主要分析这些属性是如何工作的。JS有三种不同的属性:数据属性,访问器属性和内部属性。对象的普通属性将字符串名称映射到值。例如,下面对象obj有一个数据属性,名称为 prop,对应的值为 123:

js比较两个单独的数组或对象是否相等

所谓js的中的传值,其实也就是说5种基本数据类型(null,undefind,boolean,number,string),传引用也就是说的那个引用数据类型,(array和object)。

JS对象的创建方式

组合模式(构造函数+原型模式)这是常用的创建方式。通过构造函数模式定义实例属性,通过原型模式定义方法和共享的属性。

JavaScript 防篡改对象

开发过程中,每个开发者定义的对象可能不想要被别的开发者所重写或者新增对象属性,这时候可以将对象变为防篡改对象,当然防篡改对象也有分级别的

你真的理解ES6的Class吗?

在面向对象的编程中,类是一个用于创建对象,为状态(成员变量)和行为实现(成员函数或方法)提供初始值的可扩展程序代码模板。在实际开发中,我们往往需要创建很多相同类型的对象,如用户、商品或其他对象。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!