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实现的分页插件实例
Jul 14 Javascript
jqGrid表格应用之新增与删除数据附源码下载
Dec 02 Javascript
require简单实现单页应用程序(SPA)
Jul 12 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
Oct 19 Javascript
使用Vue完成一个简单的todolist的方法
Dec 01 Javascript
vue axios 二次封装的示例代码
Dec 08 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
Feb 08 Javascript
vue中实现图片压缩 file文件的方法
May 28 Javascript
mpvue 项目初始化及实现授权登录的实现方法
Jul 20 Javascript
javascript实现一款好看的秒表计时器
Sep 05 Javascript
js+h5 canvas实现图片验证码
Oct 11 Javascript
React Ant Design树形表格的复杂增删改操作
Nov 02 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
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
destoon实现调用热门关键字的方法
2014/07/15 PHP
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
JavaScript通过RegExp实现客户端验证处理程序
2013/05/07 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
js中的面向对象入门
2017/03/06 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
在Python中使用__slots__方法的详细教程
2015/04/28 Python
在django中自定义字段Field详解
2019/12/03 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
基于FME使用Python过程图解
2020/05/13 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
网络教育毕业生自我鉴定
2013/10/10 职场文书
机关财务管理制度
2014/01/17 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
学习十八大演讲稿
2014/09/15 职场文书
求职自我评价参考范文
2019/05/16 职场文书
导游词之潮音寺
2019/09/26 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
原生JS中应该禁止出现的写法
2021/05/05 Javascript
python入门学习关于for else的特殊特性讲解
2021/11/20 Python
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS