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. border单样式写法的问题

    先写 border-top:5px; border-right:10px; 后写: border-style:solid; border-color:red;

  2. Leetcode Combination Sum II

    Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...

  3. Oracle 建立索引及SQL优化

    数据库索引: 索引有单列索引,复合索引之说,如果某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访问速度. 建设原则: 1.索引应该经 ...

  4. About_MySQL Select--来自copy_03

    MySQL Select   查询分类 单表查询:简单查询 多表查询:连接查询 联合查询:多个查询结果汇总 查询的组成 投影查询:挑选要显示的字段 select array1,array2,... f ...

  5. Windows Phone 8 Sync

    A lot of the below depends on the types of data, how often it is changing, and how often it is likel ...

  6. 学习使用vim,熟悉Linux

    随着对vim一步一步的熟悉,对Linux的资料查阅,在加上今天阅读了王垠的文章,更加的觉得学习vim是正确的选择.抛弃Windows思维,进入Linux的世界,才发现是思维上的转变,如学习英语一样,是 ...

  7. Hadoop.2.x_简单的测试文件读取与上传

    代码如下, 后备参考: package com.bigdata.hadoop.hdfs; import java.io.File; import java.io.FileInputStream; im ...

  8. css小记(3)

    1.只有块级元素可以设置背景图,行内元素要变成块级元素才可以:2.盒子不设置宽度,只设置高度,默认为100%,并自适应屏幕大小变化,为这个盒子设置margin可以在保证margin效果的同时默认调整盒 ...

  9. WebApp 里Meta标签大全,webappmeta标签大全

    1.先说说mate标签里的viewport: viewport即可视区域,对于桌面浏览器而言,viewport指的就是除去所有工具栏.状态栏.滚动条等等之后用于看网页的区域.对于传统WEB页面来说,9 ...

  10. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...