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 相关文章推荐
Mootools 1.2教程 设置和获取样式表属性
Sep 15 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
Jan 01 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
Jul 15 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
Jan 15 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
Dec 17 Javascript
JQuery datepicker 用法详解
Dec 25 Javascript
jQuery Validate插件实现表单验证
Aug 19 Javascript
BooStrap对导航条的改造实践小结
Sep 21 Javascript
javascript中call,apply,bind函数用法示例
Dec 19 Javascript
jquery获取transform里的值实现方法
Dec 12 jQuery
JavaScript变量声明var,let.const及区别浅析
Apr 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
PHP 数组教程 定义数组
2009/10/23 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
js调用图片隐藏&显示实现代码
2013/09/13 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
python基础梳理(一)(推荐)
2019/04/06 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
几个Shell Script面试题
2012/08/31 面试题
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
入党申请自荐书范文
2014/02/11 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书