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复选框CHECKBOX全选,取消全选
Aug 30 Javascript
基于jQuery的动态表格插件
Mar 28 Javascript
jquery动态添加option示例
Dec 30 Javascript
jQuery中:reset选择器用法实例
Jan 04 Javascript
JS实现单行文字不间断向上滚动的方法
Jan 29 Javascript
浅谈Javascript 数组与字典
Jan 29 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
Sep 07 Javascript
Vue.js样式动态绑定实现小结
Jan 24 Javascript
jQuery实现的隔行变色功能【案例】
Feb 18 jQuery
11个教程中不常被提及的JavaScript小技巧(推荐)
Apr 17 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
Jun 17 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
Aug 31 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
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python实现获取网站PR及百度权重
2015/01/21 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
C语言面试题
2013/05/19 面试题
南京某公司笔试题
2013/01/27 面试题
2015年元旦活动总结
2014/05/09 职场文书
怎样写离婚协议书
2015/01/26 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
荒岛余生观后感
2015/06/09 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
matlab xlabel位置的设置方式
2021/05/21 Python