JavaScript中object和Object的区别(详解)


Posted in Javascript onFebruary 27, 2017

JavaScript中object和Object有什么区别,为什么用typeof检测对象,返回object,而用instanceof 必须要接Object呢

JavaScript中object和Object的区别(详解)

这个问题和我之前遇到的问题非常相似,我认为这里有两个问题需要解决,一个是运算符new的作用机制,一个是function关键字和Funtion内置对象之间的区别。看了一些前辈的博客和标准,这里帮提问者总结一下。

1、new

new运算符的作用是创建一个对象实例。这个对象可以是用户自定义的,也可以是带构造函数的一些系统自带的对象。如果 new 表达式之后的构造函数返回的不是JavaScript内置的引用对象(Object,String等)new会创建一个匿名对象并返回;如果是内置引用对象或者原始类型就会覆盖匿名对象。(无 return 时其实为 return 原始类型 undefined)。new运算符详细介绍

2、function和Function

ECMAScript 的Function实际上就是一个功能完整的对象。而function这个关键字是用来创建所有对象的构造函数或者普通函数要用的关键字ECMAScript如何定义类和对象,提问者var a=new function(){}实际上是用构造函数的方法创建了一个匿名对象的实例,而并不是系统内置对象Function的实例,所以a instanceof Function返回false,typeof返回"object"。

那么什么时候typeof返回"function"呢?当它真的是一个函数名的时候。

 

`function a (){}
//undefined
typeof a
//"function"`

 typeof 和 instanceof 这两个功能就是完全不一样的运算符。typeof 是为了检查数据类型,instanceof是为了看一个变量是否是某个对象的实例。

typeof 的目的,是检查数据类型,而它的输出,非常确定的只有如下几个:

•undefined

•object

•boolean

•number

•string

•function

•symbol(新)

typeof 返回的结果,是一个字符串。只要检查的变量是一个对象,或者是 Null,那它就会返回 object,这当然不够精确,所以有了 instanceof。

因为不存在 object 这个对象,所以会提示你 object is not defined 。而 Object 是 JavaScript 中一个重要的对象,其它对象都是基于它的,包括你创建的函数。你创建 a 的时候,使用的是 new 关键字,这相当于是一个 Function 引用类型的实例。所以 a instanceof Object 就会是 true。

区别是Object 是一种对象类型, "object"是一个字符串, 你不定义的话没有意义。

以上这篇JavaScript中object和Object的区别(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
写给想学习Javascript的朋友一点学习经验小结
Nov 23 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
May 12 Javascript
JQuery中的事件及动画用法实例
Jan 26 Javascript
Javascript调用函数方法的几种方式介绍
Mar 20 Javascript
JS实现双击编辑可修改状态的方法
Aug 14 Javascript
全面解析多种Bootstrap图片轮播效果
May 27 Javascript
JavaScript蒙板(model)功能的简单实现代码
Aug 04 Javascript
BootstrapValidator超详细教程(推荐)
Dec 07 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
详解如何让Express支持async/await
Oct 09 Javascript
vue简单封装axios插件和接口的统一管理操作示例
Feb 02 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
Feb 27 #Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
Feb 27 #Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 #Javascript
详解Javascript几种跨域方式总结
Feb 27 #Javascript
JavaScript与JQUERY获取元素的宽、高和位置
Feb 26 #Javascript
JavaScript无阻塞加载和defer、async详解
Feb 26 #Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 #Javascript
You might like
PHP新手上路(九)
2006/10/09 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
php session的锁和并发
2016/01/22 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
php实现映射操作实例详解
2019/10/02 PHP
newxtree.js代码
2007/03/13 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
Python使用folium excel绘制point
2019/01/03 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
我的梦中国梦演讲稿
2014/04/23 职场文书
小学生倡议书范文
2014/05/13 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书