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 调试利器 Firebug使用详解六
Jul 05 Javascript
JQuery 网站换肤功能实现代码
Nov 02 Javascript
javascript日期对象格式化为字符串的实现方法
Jan 14 Javascript
Bootstrap Table使用方法详解
Aug 01 Javascript
JS匿名函数实例分析
Nov 26 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
Jul 17 Javascript
vue实现随机验证码功能的实例代码
Apr 30 Javascript
vue路由 遍历生成复数router-link的例子
Oct 30 Javascript
使用JavaScript通过前端发送电子邮件
May 22 Javascript
js绘制一条直线并旋转45度
Aug 21 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
Nov 11 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
python3学生名片管理v2.0版
2018/11/29 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
口头翻译求职人自荐信
2013/12/07 职场文书
图书室管理制度
2014/01/19 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
银行转正自我鉴定
2014/09/29 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技