JavaScript本地对象 内置对象 宿主对象
一般来说,可以创建并使用的对象有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本地对象 内置对象 宿主对象的更多相关文章
- JavaScript 参考手册——javascript本地和内置对象、BOM、DOM
本部分提供完整的 JavaScript 参考手册: JavaScript 本地对象和内置对象 Browser 对象(BOM) HTML DOM 对象 JavaScript 对象参考手册 本参考手册描述 ...
- 了解 JavaScript 中的内置对象
所有编程语言都具有内部(或内置的)对象来创建 语言的基本功能.内部对象是 您编写自定义代码所用语言的基础, 该代码基于您的想象实现自定义功能.JavaScript 有许多 将其定义为语言的内部对象.本 ...
- javascript中的内置对象总结
内置对象 标准内置对象 Object Object.create Object.prototype.toString Object.prototype.hasOwnProperty Boolean S ...
- javascript中的内置对象
2015.12.1 javascript中的内置对象 复习: 1.js中的内置函数 alert prompt write parseInt parseFloat eval isNaN document ...
- javaScript中Math内置对象基本方法入门
概念 Math 是javaScript的内置对象,包含了部分数学常数属性和数学函数方法. Math 不是一个函数对象,用户Number类型进行使用,不支持BigInt. Math 的所有属性与方法都是 ...
- 【Unity】3.1 利用内置的3D对象创建三维模型
分类:Unity.C#.VS2015 创建日期:2016-04-02 一.基本概念 Unity已经内置了一些基本的3D对象,利用这些内置的3D对象就可以直接构建出各种3D模型(当然,复杂的三维模型还需 ...
- JavaScript中的内置函数
JavaScript中的内置函数 制作人:全心全意 在使用JavaScript语言时,除了可以自定义函数之外,还可以使用JavaScript的内置函数,这些内置函数是由JavaScript语言自身提供 ...
- 前端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 ...
- JavaScript学习07 内置对象
JavaScript内置对象 图像对象 导航对象 窗口对象 屏幕对象 事件对象 历史对象 文件对象(重要) 锚点对象 链接对象 框架对象 表单对象(重要) 位置对象 JS Window 窗口对象:ht ...
随机推荐
- case while for
#!/bin/bash#create by howhy 20161214#mysql server start stop restart. /etc/init.d/functionsmysqldir= ...
- Dynamics AX 2012 R2 配置报表服务器
今天Reinhard在使用报表的过程中,发现以下错误: The default Report Server Configuration ID could not be found in the SRS ...
- vm虚拟机启动失败 Global\vmx86
workstation12 PRO 启动虚拟机异常报错:无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件 解决方法,启动windows系统服务:
- WampServer中MySQL中文乱码解决
1.修改mysql的my.ini文件: 在 [client] 下面增加 default-character-set=utf8 在 [mysqld] 下面增加: character_set_server ...
- sql按时间段汇总
select dateadd(mi,(datediff(mi,convert(varchar(10),dateadd(ss,-1,CreateOn),120),dateadd(ss,-1,Create ...
- android录像增加时间记录(源码里修改)
需要做一个功能,录像和播放时都显示录时的时间,参考文章链接找不到了,不好意思,这里记录一下,防止下次找不到了.另一篇关于源码录像的流程请参考 http://www.verydemo.com/demo_ ...
- chrome表单自动填充去掉input黄色背景解决方案
设置css代码如下: input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; } 参考文章:http://bl ...
- (转)将cocos2dx项目从VS移植到Eclipse
本文转自:http://www.cnblogs.com/Z-XML/p/3349518.html 引言:我们使用cocos2d-x引擎制作了一款飞行射击游戏,其中创新性地融入了手势识别功能.但是我 们 ...
- Python对整形数字进行加密和解密
# -*- coding:utf-8 -*- __author__ = 'Ray' class Encryption: """整形数字简单的一个加密/解密算法" ...
- filebeat 多行日志的处理
配置文件位于/etc/filebeat/filebeat.yml,就是filebeat的主配置文件 打开文件,搜索multiline:,默认是注释的,常用的有如下三个配置: multiline: pa ...