Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中:如果对象是一个函数,那么如果函数是一个对象的实例,它又如何呢_Javascript_Function_Object - Fatal编程技术网

在JavaScript中:如果对象是一个函数,那么如果函数是一个对象的实例,它又如何呢

在JavaScript中:如果对象是一个函数,那么如果函数是一个对象的实例,它又如何呢,javascript,function,object,Javascript,Function,Object,换句话说,第一个是什么?鸡蛋还是母鸡?我无法理解JavaScript是如何实现的,因为我读了以下内容: 正如您在控制台中看到的: >Object instanceof Function true >new Function() instanceof Object true 似乎是一个致命的循环 为什么所有这些: typeof new Object() typeof new Array() typeof new Date() typeof new RegExp() typeof ne

换句话说,第一个是什么?鸡蛋还是母鸡?我无法理解JavaScript是如何实现的,因为我读了以下内容:

正如您在控制台中看到的:

>Object instanceof Function
true
>new Function() instanceof Object
true
似乎是一个致命的循环

为什么所有这些:

typeof new Object()
typeof new Array()
typeof new Date()
typeof new RegExp()
typeof new Number()
typeof new Boolean()
typeof new String()
返回“object”,但如下所示:

typeof new Function()
返回“函数”

好像是什么。。。对象是从函数派生的吗? 我不这么认为,因为:

>new Function() instanceof Object
true
>new Object() instanceof Function
false

所以不是…

看起来您正在混淆类型、函数和对象

简短回答:

在Javascript中,函数是对象。对象不是函数,但存在创建和/或返回对象的函数

用示例详细回答:

函数是对象,这是正确的<代码>对象是一个函数,
函数
也是一个函数,如下面的控制台输出所示

但是当你说
Object
是一个函数时,实际上你指的是
Object()
函数,而不是类型
Object

// Object is a function
> Object
function Object() { [native code] }

// Function is a function
> Function
function Function() { [native code] }

// The type of Object is function
> typeof(Object)
"function"

// The type of the result of invoking the Object() function (AKA constructor, since using "new" keyword) is a new object
> typeof(new Object())
"object"

> new Object() instanceof Object
true
> new Function() instanceof Function
true
// note the difference
> new Object() instanceof Function
false
> new Function() instanceof Object
true
在您的示例中,在某些情况下,您实际上是在调用函数并查看函数的结果,而不是函数本身。例如,
typeof(String)==“function”
,但
typeof(newstring())==“object”
(本例中为“String”对象)


当您使用
new
关键字调用这些函数时,您会得到一个新对象,其类是您调用的函数的名称。
new Function()instanceof Object===true
的原因是
Object
是以这种方式构造的任何对象的基类
Object
是基类的名称,实例的类型是
“Object”
(即从类中创建的对象,就像从饼干切割器中创建的饼干)。

Object
是一个函数,也是一个对象,
new
创建一个对象,它可以是一个函数。和
对象的可能副本
是一个类型<代码>对象是一个函数和一个对象(所有函数都是对象)<代码>对象是一个类,它可以构造类型为
对象
的对象,这些对象是
对象
类的实例。所有其他类都继承自基类
对象
。因此
new Function()
的实例是函数,它们是
Function
类的实例,其基类是
Object
。因此,函数(或类型为
函数
的对象)既是
函数
又是
对象
。清澈如泥,对吗?