Javascript &引用;功能“;是功能,怎么可能?

Javascript &引用;功能“;是功能,怎么可能?,javascript,object,Javascript,Object,在js中,我们有一个名为“function”的函数。 它的一个实例返回一个函数: var myfunc = new Function('arg1','arg2','return arg1+arg2'); 在该示例中,变量myfunc包含一个返回两个给定参数之和的函数 我的问题是,这个函数怎么可能是一个函数?它不可能是自身的实例。 对象也是一个函数,一个函数的实例。但函数是对象的实例,因为函数是对象 我不明白这怎么可能,这是一个无限循环 谢谢。对象,函数等确实是函数,确切地说是构造函数 请记住,

在js中,我们有一个名为“function”的函数。 它的一个实例返回一个函数:

var myfunc = new Function('arg1','arg2','return arg1+arg2');
在该示例中,变量myfunc包含一个返回两个给定参数之和的函数

我的问题是,这个函数怎么可能是一个函数?它不可能是自身的实例。 对象也是一个函数,一个函数的实例。但函数是对象的实例,因为函数是对象

我不明白这怎么可能,这是一个无限循环


谢谢。

对象
函数
等确实是函数,确切地说是构造函数

请记住,创建的对象如下所示:

function MyObject() {
    this.foo = 'bar';
}

var my = new MyObject();
alert(my.foo);
function myfunc(arg1, arg2) { return arg1 + arg2 }

顺便说一下,使用
新函数(…)
通常是个坏主意。您的示例将更加清晰,如下所示:

function MyObject() {
    this.foo = 'bar';
}

var my = new MyObject();
alert(my.foo);
function myfunc(arg1, arg2) { return arg1 + arg2 }


因此,在产品中使用
newfunction()
的理由很少(不过模板引擎是一个很好的用例)

对象
函数
等确实是函数,确切地说是构造函数

请记住,创建的对象如下所示:

function MyObject() {
    this.foo = 'bar';
}

var my = new MyObject();
alert(my.foo);
function myfunc(arg1, arg2) { return arg1 + arg2 }

顺便说一下,使用
新函数(…)
通常是个坏主意。您的示例将更加清晰,如下所示:

function MyObject() {
    this.foo = 'bar';
}

var my = new MyObject();
alert(my.foo);
function myfunc(arg1, arg2) { return arg1 + arg2 }

因此,在产品中使用
newfunction()
的理由很少(不过模板引擎是一个很好的用例)

简单的答案是“因为ECMA-262这么说”

像,Object,Array,Date等对象都是内置对象,所以它们不是以通常的方式构建的,它们就是这样。环境根据ECMA-262建立了它们、它们的原型和它们的
[[prototype]]
之间的关系。So函数(即
Function.prototype===Function[[prototype]]
),它继承自Object.prototype。

简单的答案是“因为ECMA-262这么说”


像,Object,Array,Date等对象都是内置对象,所以它们不是以通常的方式构建的,它们就是这样。环境根据ECMA-262建立了它们、它们的原型和它们的
[[prototype]]
之间的关系。所以函数(即
Function.prototype===Function[[prototype]]
),它继承自Object.prototype。

您正在调用函数的构造函数。我可能会对
new
关键字的使用做一些研究。在某个特定的时刻,JavaScript不再实现,而是在运行时实现。我可以想象,这就是其中的一个接缝:)@Corbin:这与它没有什么关系
Function.toString()==“Function(){\n[本机代码]\n}”
,也就是说,它是一个函数。我最好问问JS中为什么需要
Function
对象?…@ThiefMaster如果我正确理解他的问题,他本质上想知道函数是如何实现的。虽然我的评论并没有完全回答这个问题,但我相信在他一系列挖掘的最后将是本地代码。似乎我误解了这个问题:)。你在调用函数的构造函数。我可能会对
new
关键字的使用做一些研究。在某个特定的时刻,JavaScript不再实现,而是在运行时实现。我可以想象,这就是其中的一个接缝:)@Corbin:这与它没有什么关系
Function.toString()==“Function(){\n[本机代码]\n}”
,也就是说,它是一个函数。我最好问问JS中为什么需要
Function
对象?…@ThiefMaster如果我正确理解他的问题,他本质上想知道函数是如何实现的。虽然我的评论并没有完全回答这个问题,但我相信在他一系列挖掘的最后将是本地代码。似乎我误解了这个问题:)。这是一个例子,我不这么做,但我想知道它是如何工作的。但是再一次-函数是如何自身的一个实例?@iiddaannyy:它不是一个实例,因为调用
函数
构造函数来创建
函数
构造函数。显然这是不可能的。
函数
构造函数由底层实现创建,并被赋予必要的属性,以便
instanceof
将其解释为
“函数”
…您可以在这里的规范中了解它:…我不应该拥有
“函数”
在我之前评论的最后一句话中引用。它应该是:…将其解释为
函数的一个实例。这是一个示例,我不这么做,但我想知道它是如何工作的。但是,同样地,函数是如何自身的一个实例?@iiddaannyy:它不是一个实例,因为调用
函数
构造函数来创建
函数
构造器。显然这是不可能的。
函数
构造函数由底层实现创建,并被赋予必要的属性,以便
instanceof
将其解释为
“函数”
…您可以在这里的规范中了解它:…我不应该拥有
“函数”
在我之前评论的最后一句话中引用。它应该是:…将其解释为
函数的一个实例。