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 相关文章推荐
利用JQuery的load函数动态加载其它页面的内容的实现代码
Dec 14 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
js简单网速测试方法完整实例
Dec 15 Javascript
jQuery遍历json的方法分析
Apr 16 Javascript
基于JS实现EOS隐藏错误提示层代码
Apr 25 Javascript
jQuery 实现评论等级好评差评特效
May 06 Javascript
Angular中实现树形结构视图实例代码
May 05 Javascript
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
12条写出高质量JS代码的方法
Jan 07 Javascript
Promise扫盲贴
Jun 24 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
Jan 22 Javascript
测量JavaScript函数的性能各种方式对比
Apr 27 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
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
Php图像处理类代码分享
2012/01/19 PHP
php 如何获取数组第一个值
2013/08/06 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
jquery 插件 人性化的消息显示
2008/01/21 Javascript
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
Python-嵌套列表list的全面解析
2016/06/08 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
物流经理自我评价
2013/09/23 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
财务方面个人工作的自我评价
2013/12/28 职场文书
实习单位证明范例
2014/11/17 职场文书
现场施工员岗位职责
2015/04/11 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android