JS对象类型

JS中,可以将对象分为"内部对象"、"宿主对象"和"自定义对象"三种。

1、本地对象

ECMA-262定义为"独立于宿主环境的JS实现提供的对象"。简单来说,本地对象就是JS定义的类(引用类型)。它们包括:

Object/Function/Array/String/Boolean/Number/Date/RegExp/Error/
EvalError/RangeError/ReferenceError/SyntaxError/TypeError/URIError

2、内置对象

ECMA-262把内置对象定义为"由JS实现提供的、独立于宿主环境的所有对象,在JS程序开始执行时出现"。这意味着开发者不必明确实例化内置对象,它已被实例化了。JS只定义了两个内置对象,即Globa和Math(它们也是本地对象,根据定义,每个内置对象就是本地对象)

Global对象的所有属性
属性 说明 属性 说明
undefined 特殊值undefined Date 构造函数Date
NaN 特殊值NaN RegExp 构造函数RegExp
Infinity 特殊值Infinity Error 构造函数Error
Object 构造函数Object EvalError 构造函数EvalError
Array 构造函数Array RangeError 构造函数RangeError
Function 构造函数Function ReferenceError 构造函数ReferenceError
Boolean 构造函数Boolean SyntaxError 构造函数SyntaxError
String 构造函数String TypeError 构造函数TypeError
Number 构造函数Number URIErroe 构造函数URIError

注意:

  • 区分对象定义和Global构造函数
  • 内置对象是本地对象的一种

3、宿主对象

宿主对象就是执行JS脚本的环境提供的对象。对于嵌入到网页中的JS来说,其诉诸对象就是浏览器提供的对象,所以又称为浏览器对象,如Chrome/IE/Firefox等浏览器提供的对象。不同的浏览器提供的宿主对象可能不同,及时提供的对象相同,其实现方式也大相径庭!这会带来浏览器兼容性问题,增加开发难度。所有的BOM和DOM对象都是宿主对象。

  • BOM对象包括:window对象、location对象、navigator对象、screen对象、history对象
  • DOM对象是节点对象,包括类型:Node/Document/Element/Text/Comment/CDATSection/DocumentType/Attr

4、自定义对象

自定义对象是开发人员自己定义的对象。JS允许使用自定义对象,使JS应用及功能得到扩展。

JS对象之间的关系

1、instanceof运算符

instanceof运算符判断机制,如:SubClass instanceof SuperClass;

如果对象SubClass在对象SuperClass的原型链中被发现,那么instanceof操作符返回true,否在返回false

换句话说对象通过__proto__属性不断回溯,如果__proto__经过某个对象的prototype属性,那么instanceof操作符返回true,否则返回false。

2、JS对象之间的关系

通过图来说明JS对象之间的关系:

所以从图上我们的可以得出:

Object instanceof Function   //true

Function instanceof Object   //true

(Array/Boolean/String/Number/Date/RegExp/Error) instanceof Object/Function      //true

(Array/Boolean/String/Number/Date/RegExp/Error.prototype) instanceof Object     //true

(Array/Boolean/String/Number/Date/RegExp/Error.prototype) instanceof Function   //false

(new Array/Boolean/String/Number/Date/RegExp/Error) instanceof Object     //true

(new Array/Boolean/String/Number/Date/RegExp/Error) instanceof Function   //false

Foo instanceof (Function/Object)  //true

Foo.prototype instanceof Object   //true

Foo.prototype instanceof Function //false

(new Foo) instanceof Foo/Object   //true

(new Foo) instanceof Function     //false

JS对象之间的关系的更多相关文章

  1. JSON字符串和JS对象之间的转换

    JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象  JSON字符串 str JSON.parse(str) eval(str) eva ...

  2. PHP类和对象之间的关系

    类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...

  3. EF数据存贮问题二之“无法定义这两个对象之间的关系,因为它们附加到不同的 ObjectContext 对象”

    “无法定义这两个对象之间的关系,因为它们附加到不同的 ObjectContext 对象”,这是在EF中,一对多关系表,有外键的类保存至数据库中出现的错误. 我原来是用JAVA开发的,习惯性的处理一对多 ...

  4. VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)

    前面一节中鸡啄米进行了文档.视图和框架的概述,本节主要讲解文档.视图.框架结构中各对象之间的关系. 各个对象之间的关系 文档.视图.框架结构中涉及到的对象主要有:应用程序对象.文档模板对象.文档对象. ...

  5. VS2010-MFC(文档、视图和框架:各对象之间的关系)

    转自:http://www.jizhuomi.com/software/223.html 前面一节进行了文档.视图和框架的概述,本节主要讲解文档.视图.框架结构中各对象之间的关系. 各个对象之间的关系 ...

  6. Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...

  7. python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系

    https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...

  8. 秒懂JS对象、构造器函数和原型对象之间的关系

    学习JS的过程中,想要掌握面向对象的程序设计风格,对象模型(原型和继承)是其中的重点和难点,拜读了各类经典书籍和各位前辈的技术文章,感觉都太过高深,花费了不少时间才搞明白(个人智商是硬伤/(ㄒoㄒ)/ ...

  9. JavaScript中的 原型 property 构造函数 和实例对象之间的关系

    1 为什么要使用原型? /* * javascript当中 原型 prototype 对象 * * */ //首先引入 prototype的意义,为什么要使用这个对象 //先来写一个构造函数的面向对象 ...

随机推荐

  1. ACM +-字符串

    +-字符串 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换. ...

  2. ACM: meixiuxiu学图论-并查集-最小生成树-解题报告

    /* 最小生成树,最小环的最大权值按照排序后去构建最小生成树就可以了,注意遇到的第一个根相同的点就记录权值,跳出,生成的环就是最小权值环. */ //AC代码: #include"iostr ...

  3. 洛谷 P1449 后缀表达式 Label:表达式计算系列

    题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...

  4. c 语言结构体的三种定义方式

    struct 结构体名{   成员列表:   ..... }结构体变量: 结构体类型变量的定义 结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体 ...

  5. 【noiOj】p8207(233)

    07:和为给定数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 给出若干个整数,询问其中是否有一对数的和等于给定的数. 输入 共三行:第一行是整数n(0 & ...

  6. weblogic 11g 配置db2数据源

    配置db2数据源可以直接在包里面配置,不需要专门在服务器上配置数据源. 在11g版本前要配置db2数据源是需要增加包,后续的版本处理了这个问题. 1. 将C:\Program Files\SQLLIB ...

  7. JSP 页面缓存以及清除缓存

    一.概述 缓存的思想可以应用在软件分层的各个层面.它是一种内部机制,对外界而言,是不可感知的. 数据库本身有缓存,持久层也可以缓存.(比如:hibernate,还分1级和2级缓存) 业务层也可以有缓存 ...

  8. typeof操作符在javascript中运用时时页面上的操作数显示

    typeof可以告诉我们它的操作数是一个字符串(string).数值(number).函数(function).布尔值(boolean)或对象(object). 1.字符串(string) alert ...

  9. HTML5 Input 类型

    浏览器支持 Input type IE Firefox Opera Chrome Safari email No 4.0 9.0 10.0 No url No 4.0 9.0 10.0 No numb ...

  10. spring security使用数据库资源

    国内对权限系统的基本要求是将用户权限和被保护资源都放在数据库里进行管理,在这点上Spring Security并没有给出官方的解决方案,为此我们需要对Spring Security进行扩展.. 数据库 ...