JavaScript中object和Object的区别(详解)
JavaScript中object和Object有什么区别,为什么用typeof检测对象,返回object,而用instanceof必须要接Object呢
这个问题和我之前遇到的问题非常相似,我认为这里有两个问题需要解决,一个是运算符new的作用机制,一个是function关键字和Funtion内置对象之间的区别。看了一些前辈的博客和标准,这里帮提问者总结一下。
1、new
new运算符的作用是创建一个对象实例。这个对象可以是用户自定义的,也可以是带构造函数的一些系统自带的对象。如果new表达式之后的构造函数返回的不是JavaScript内置的引用对象(Object,String等)new会创建一个匿名对象并返回;如果是内置引用对象或者原始类型就会覆盖匿名对象。(无return时其实为return原始类型undefined)。new运算符详细介绍
2、function和Function
ECMAScript的Function实际上就是一个功能完整的对象。而function这个关键字是用来创建所有对象的构造函数或者普通函数要用的关键字ECMAScript如何定义类和对象,提问者vara=newfunction(){}实际上是用构造函数的方法创建了一个匿名对象的实例,而并不是系统内置对象Function的实例,所以ainstanceofFunction返回false,typeof返回"object"。
那么什么时候typeof返回"function"呢?当它真的是一个函数名的时候。
`functiona(){} //undefined typeofa //"function"`
typeof和instanceof这两个功能就是完全不一样的运算符。typeof是为了检查数据类型,instanceof是为了看一个变量是否是某个对象的实例。
typeof的目的,是检查数据类型,而它的输出,非常确定的只有如下几个:
•undefined
•object
•boolean
•number
•string
•function
•symbol(新)
typeof返回的结果,是一个字符串。只要检查的变量是一个对象,或者是Null,那它就会返回object,这当然不够精确,所以有了instanceof。
因为不存在object这个对象,所以会提示你objectisnotdefined。而Object是JavaScript中一个重要的对象,其它对象都是基于它的,包括你创建的函数。你创建a的时候,使用的是new关键字,这相当于是一个Function引用类型的实例。所以ainstanceofObject就会是true。
区别是Object是一种对象类型,"object"是一个字符串,你不定义的话没有意义。
以上这篇JavaScript中object和Object的区别(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。