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的$(document).ready()和onload的加载顺序
May 26 Javascript
jQuery获取及设置表单input各种类型值的方法小结
May 24 Javascript
简洁实用的BootStrap jQuery手风琴插件
Aug 31 Javascript
jQuery无缝轮播图代码
Dec 22 Javascript
如何利用JQuery实现从底部回到顶部的功能
Dec 27 Javascript
微信小程序教程系列之视图层的条件渲染(10)
Apr 19 Javascript
WebSocket实现简单客服聊天系统
May 12 Javascript
JS实现带动画的回到顶部效果
Dec 28 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
详解如何用typescript开发koa2的二三事
Nov 13 Javascript
vue+webpack 更换主题N种方案优劣分析
Oct 28 Javascript
使用vue实现一个电子签名组件的示例代码
Jan 06 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 Mysql日期和时间函数集合
2007/11/16 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
web前端开发也需要日志
2010/12/09 Javascript
javascript截取字符串小结
2015/04/28 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
vuex实现购物车功能
2020/06/28 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
python如何实时获取tcpdump输出
2020/09/16 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
人力资源管理专业应届生求职信
2013/09/28 职场文书
农民工创业典型事迹
2014/01/25 职场文书
应届生自荐信范文
2014/02/21 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
2014年除四害工作总结
2014/12/06 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python
MySQL插入数据与查询数据
2022/03/25 MySQL
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL