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 相关文章推荐
WordPress 照片lightbox效果的运用几点
Jun 22 Javascript
jquery tab插件精简版分享
Sep 10 Javascript
面向对象的Javascript之三(封装和信息隐藏)
Jan 27 Javascript
表单验证的完整应用案例探讨
Mar 29 Javascript
javascript回车完美实现tab切换功能
Mar 13 Javascript
让html页面不缓存js的实现方法
Oct 31 Javascript
JavaScript实现Base64编码转换
Apr 23 Javascript
jQuery延迟执行的实现方法
Dec 21 Javascript
深入浅析Vue中的Prop
Jun 10 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
Apr 24 Javascript
vue中typescript装饰器的使用方法超实用教程
Jun 17 Javascript
在layui中select更改后生效的方法
Sep 05 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
多文件上传的例子
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
wxPython使用系统剪切板的方法
2015/06/16 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
最新党员的自我评价分享
2013/11/04 职场文书
社区工作者思想汇报
2014/01/13 职场文书
《自选商场》教学反思
2014/02/14 职场文书
公证书样本
2014/04/10 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
《角的度量》教学反思
2016/02/18 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers