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 相关文章推荐
JMenuTab简单使用说明
Mar 13 Javascript
Javascript学习笔记之数组的构造函数
Nov 23 Javascript
javascript实现表单验证
Jan 29 Javascript
js贪吃蛇游戏实现思路和源码
Apr 14 Javascript
BootStrap智能表单实战系列(七)验证的支持
Jun 13 Javascript
js计算系统当前日期是星期几的方法
Jul 14 Javascript
Google 地图叠加层实例讲解
Aug 06 Javascript
JavaScript递归操作实例浅析
Oct 31 Javascript
javascript将非数值转换为数值
Sep 13 Javascript
微信小程序 如何获取网络状态
Jul 26 Javascript
Vue路由模块化配置的完整步骤
Aug 14 Javascript
Element DateTimePicker日期时间选择器的使用示例
Jul 27 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 高效率写法 推荐
2010/02/21 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
关于js datetime的那点事
2011/11/15 Javascript
document.documentElement的一些使用技巧
2013/04/18 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
Pytorch释放显存占用方式
2020/01/13 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
武汉东之林科技有限公司机试
2013/09/17 面试题
个人简历自我评价范文
2014/02/04 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
公积金具结保证书
2015/05/11 职场文书