在ECMAScript中,所有对象并非同等创建的。

一般来说,可以创建并使用的对象有3种:本地对象、内置对象和宿主对象。

1. 本地对象

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

何谓宿主环境? “宿主”,生物学上,一般是指寄生的生物体选择的寄生体,如:火影里的“白”(哈哈哈)。此处的宿主环境,简单来说就是用户的机器环境,包括操作系统和浏览器

本地对象包括如下内容:Object、Function、String、Array、Boolean、Number、Date、 RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError。由此可知,本地对象是ECMA-2定义的类(引用类型)。

2. 内置对象

ECMA-262把内置对象(built-in object)定义为“ 由ECMAScript实现提供的,独立与宿主环境的所有对象,在ECMAScript程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已经被实例化了。ECMA只定义了两个内置对象,即Global和Math(它们也是本地对象,根据定义,所有内置对象都是本地对象)。

1)Math对象的常见属性:E(算术常量e,即自然对数的底数,约为2.718)、PI(圆周率,约为3.14159)。

Math对象的常见方法:

max(x,y): 返回x和y中较大的值;     min(x,y): 返回x和y中较小的值;         random(): 返回0~1之间的随机数;

round(x): 对数四舍五入;              floor(x): 对数向下取整;                    ceil(x): 对数向上取整;

2)Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在,不信,在浏览器console中输入Global,报错。

全局对象是预定义的对象,作为JavaScript全局函数和全局属性的占位符。全局对象不是任何对象的属性,所以它没有名称?。

在顶层JavaScript代码中,可以用关键字this来引用全局对象。但通常不必用这种方式引用全局对象,因为全局对象是作用域链的头,这意味着所有非限定性的变量和函数名都会作为该对象的属性来查询。例如,当JavaScript代码引用parseInt函数时,它引用的是全局对象的parseInt属性。

全局对象是作用域链的头,这意味着在顶层JavaScript中申明的变量都将成为全局对象的属性。

全局对象只是一个对象,而不是类。即没有构造函数,也无法实例化一个新的全局对象。

顶层属性(全局属性):

NaN: 指示某个值是不是数字值; undefined: 未定义的值; Infinity: 正的无穷大的数值。

顶层函数(全局方法):

isNaN(): 检测某个值是否为数值;                               isFinite(): 检测某个值是否为无穷大的值;

Number(): 把对象的值转换为数值;                           String(): 把对象的值转换为字符串;                            Boolean(): 把对象的值转换为布尔值;

parseInt(): 解析一个字符串并返回整数;                     parseFloat(): 解析一个字符串并返回浮点值;

encodeURI(): 将字符创编码为URI;                           decodeURI(): 解码某个编码的URI;

encodeURIComponent(): 将字符串编码为URI组件;     decodeURIComponent(): 解码某个编码的URI组件;

escape(): 对字符进行编码;                                      unescape(): 对由escape编码的字符串进行解码;

eval(): 计算JavaScript字符串,并把它作为脚本代码来执行;

3. 宿主对象

所有非本地对象都是宿主对象(host Object),即由ECMAScript实现的宿主环境提供的对象。

所有的BOM和DOM对象都是宿主对象。

那如下代码中的oPerson对象呢,既不是ECMA官方定义的本地对象,也不是宿主对象,它是用户自定义的对象(user defined object)。

var oPerson = new Object();
oPerson.name = "ting";
oPerson.age = 23;

4. 总结

本地对象是ECMA官方定义好的对象;内置对象也是本地对象,只包括Global对象和Math对象;宿主对象包括BOM和DOM对象。

时间:2014-10-20

地点:合肥

引用:http://www.xiaoxiaozi.com/2010/04/05/1740/#article_nav_0

http://www.w3school.com.cn/js/pro_js_object_types.asp

JavaScript本地对象 内置对象 宿主对象的更多相关文章

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

    本部分提供完整的 JavaScript 参考手册: JavaScript 本地对象和内置对象 Browser 对象(BOM) HTML DOM 对象 JavaScript 对象参考手册 本参考手册描述 ...

  2. 了解 JavaScript 中的内置对象

    所有编程语言都具有内部(或内置的)对象来创建 语言的基本功能.内部对象是 您编写自定义代码所用语言的基础, 该代码基于您的想象实现自定义功能.JavaScript 有许多 将其定义为语言的内部对象.本 ...

  3. javascript中的内置对象总结

    内置对象 标准内置对象 Object Object.create Object.prototype.toString Object.prototype.hasOwnProperty Boolean S ...

  4. javascript中的内置对象

    2015.12.1 javascript中的内置对象 复习: 1.js中的内置函数 alert prompt write parseInt parseFloat eval isNaN document ...

  5. javaScript中Math内置对象基本方法入门

    概念 Math 是javaScript的内置对象,包含了部分数学常数属性和数学函数方法. Math 不是一个函数对象,用户Number类型进行使用,不支持BigInt. Math 的所有属性与方法都是 ...

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

    分类:Unity.C#.VS2015 创建日期:2016-04-02 一.基本概念 Unity已经内置了一些基本的3D对象,利用这些内置的3D对象就可以直接构建出各种3D模型(当然,复杂的三维模型还需 ...

  7. JavaScript中的内置函数

    JavaScript中的内置函数 制作人:全心全意 在使用JavaScript语言时,除了可以自定义函数之外,还可以使用JavaScript的内置函数,这些内置函数是由JavaScript语言自身提供 ...

  8. 前端JavaScript(2) --常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍

    昨日内容回顾 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

  9. JavaScript学习07 内置对象

    JavaScript内置对象 图像对象 导航对象 窗口对象 屏幕对象 事件对象 历史对象 文件对象(重要) 锚点对象 链接对象 框架对象 表单对象(重要) 位置对象 JS Window 窗口对象:ht ...

随机推荐

  1. jquery判断起止时间大小和非空

    //时间判断 function CheckDate() { var startTime = $('#txtTime').val(); //获取当前日期 var start = new Date(sta ...

  2. java中的23中设计模式(转载的,有时间一定要熟读)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  3. Chrom 浏览器一些命令

    https://webkit.org/build-tools/  开发环境搭建 开源:http://www.17ky.net/kyxm/4_0_3_2_0_0/ http://www.chromium ...

  4. mysql5.6中 order by 多个字段排序问题

    今天用order by排序 后面跟了多个字段,如sql语句: SELECT a.id,a.loginname,a.address,u.id,u.`name`,u.address FROM admin_ ...

  5. hadoop2.0初识1.1

    1.伪分布式hdfs文件系统的搭建(单节点文件系统) 1.1.根据上节的讲解,配置主机映射.jdk和解压hadoop压缩包 1.2.配置namenode 在/opt/modules/hadoop-2. ...

  6. Bootstrap_警示框

    一.默认警示框 Bootstrap框架通过“alert“样式来实现警示框效果.在默认情况之下,提供了四种不同的警示框效果: 1.成功警示框:告诉用用户操作成功,在“alert”样式基础上追加“aler ...

  7. [HIHO1052]基因工程(找规律)

    题目链接:http://hihocoder.com/problemset/problem/1052 题意:中文题面,就是修改其中几个字符,使得[0,k-1]和[n-k,n-1]的字符相同. 会发现一个 ...

  8. [转] 控制Arduino的利器-Windows Remote Arduino

    原文地址:控制Arduino的利器-Windows Remote Arduino 1. 概述 相信很多朋友已经在玩 Arduino了,而且一般都是使用官方的Arduino IDE来写程序控制Ardui ...

  9. springMVC简单示例

    1.新建web工程 2.引入springframework架包 3.配置文件 web.xml <?xml version="1.0" encoding="UTF-8 ...

  10. aws在线技术峰会笔记-主会场

    容器服务:Elastic container service IoT可以采用无服务器架构.