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. 20145308刘昊阳 《Java程序设计》第2周学习总结

    20145308刘昊阳 <Java程序设计>第2周学习总结 教材学习内容总结 第三章 基础语法 3.1 类型.变量与运算符 类型 基本类型 整数(short/int/long) short ...

  2. CSS 分享

    原来的那个暂时不用了,贴出来一下,有兴趣可以参考,原型是Metro,不要禁用css 改了很多次~ 面码大法好!!! /*测试区域*/ /*标题备份*/ h7 { background: #2B6695 ...

  3. BZOJ4491: 我也不知道题目名字是什么

    Description 给定一个序列A[i],每次询问l,r,求[l,r]内最长子串,使得该子串为不上升子串或不下降子串 Input 第一行n,表示A数组有多少元素接下来一行为n个整数A[i]接下来一 ...

  4. ffmpeg入门

    总入口 http://blog.csdn.net/leixiaohua1020/article/details/15811977 各结构体介绍 http://blog.csdn.net/leixiao ...

  5. __attribute__ 变量对齐

    http://blog.163.com/sunm_lin/blog/static/9192142200741533038695/ 一.   __attribute__ ((aligned (n))) ...

  6. 解决方案:Resharper对系统关键字提示‘can not resolve symbol XXX’,并且显示红色,但是编译没有问题

    环境:Visual studio 2013 community update 4 + Resharper 8.2 + Windows 7现象:我的C#工程编译没有问题, 但是在代码编辑器中系统关键字显 ...

  7. Ajax注册验证js代码

    分享jquery网站:http://www.css88.com/jqapi-1.9/focusout/ $(document).ready(function() { var bool_user = f ...

  8. How does controller listen to service?

    Polling. The Controller periodically asks the Service for the latest data. IMHO, this option sucks, ...

  9. Eqs

    Eqs 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=15029 题意: 给出系数a1,a2,a3,a4,a5,求出 ...

  10. [LintCode] Binary Tree Paths 二叉树路径

    Given a binary tree, return all root-to-leaf paths.Example Given the following binary tree: 1 /   \2 ...