在JavaScript中:如果对象是一个函数,那么如果函数是一个对象的实例,它又如何呢
换句话说,第一个是什么?鸡蛋还是母鸡?我无法理解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
>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
。因此,函数(或类型为函数
的对象)既是函数
又是对象
。清澈如泥,对吗?