在JavaScript中:如果Object是一个函数,那么如果一个函数是一个对象的实例,它怎么可能呢
In JavaScript: If Object is a function then how can it be if a function is an instance of an object
换句话说,第一个是什么?鸡蛋还是母鸡?我不明白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()
返回"object",但是这个:
typeof new Function()
返回"函数"
看起来。。。对象是从函数派生的吗?我不这么认为,因为:
>new Function() instanceof Object
true
>new Object() instanceof Function
false
所以不是。。。
看起来您混淆了类型、函数和对象。
简短回答:
在Javascript中,函数是对象。对象不是函数,而是存在创建和/或返回对象的函数。
带示例的详细答案:
你认为函数是对象是正确的。Object
是一个函数,Function
也是,如下控制台输出所示。
但当你说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(new String()) === "object"
(在本例中为"字符串"对象)。
当您使用new
关键字调用这些函数时,您会得到一个新对象,其类是您调用的函数的名称。new Function() instanceof Object === true
的原因是Object
是以这种方式构造的任何对象的基类。Object
是基类的名称,实例的类型是"object"
(也就是说,根据类创建的对象,就像cookie切割器中的cookie一样)。
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟