【发布时间】:2014-12-23 08:05:09
【问题描述】:
换句话说,什么是第一?鸡蛋还是母鸡?读到以下内容后,我无法理解 JavaScript 是如何实现的:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function#Properties_and_Methods_of_Function。
正如您在控制台中看到的:
>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()
返回“对象”,但是这个:
typeof new Function()
返回“函数”
看起来像什么...对象是从函数派生的吗? 我不这么认为,因为:
>new Function() instanceof Object
true
>new Object() instanceof Function
false
所以不是……
【问题讨论】:
-
Object是一个函数也是一个对象,new创建一个对象,它可以是一个函数。 -
object是一个类型;Object是一个函数和一个对象(所有函数都是对象);Object是一个类,它可以构造object类型的对象,这些对象是Object类的实例。所有其他类都继承自基类Object。所以new Function()的实例是函数,它们是作为基类为Object的Function类的实例的对象。所以一个函数(或一个类型为function的对象)既是Function又是Object。像泥一样清澈,对吧?
标签: javascript function object