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中的立即执行函数表达式介绍
Mar 15 Javascript
简单理解JavaScript中的封装与继承特性
Mar 19 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
基于js实现二级下拉联动
Dec 17 Javascript
原生JS实现左右箭头选择日期实例代码
Mar 14 Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 Javascript
原生JS实现自定义滚动条效果
Oct 27 Javascript
Bootstrap一款超好用的前端框架
Sep 25 Javascript
vue-router传递参数的几种方式实例详解
Nov 13 Javascript
Vue指令指令大全
Feb 09 Javascript
Vue开发之watch监听数组、对象、变量操作分析
Apr 25 Javascript
谈谈JavaScript中的垃圾回收机制
Sep 17 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页面间传递参数实例代码
2008/06/05 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
python3简单实现微信爬虫
2015/04/09 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
护理专业的自荐信
2013/10/22 职场文书
心理健康教育心得体会
2013/12/29 职场文书
先进工作者推荐材料
2014/12/23 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
运动会200米广播稿
2015/08/19 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers