Javascript中的“函数对象”一词究竟是什么意思?

时间:2016-10-03 09:50:46

标签: javascript javascript-objects

经过大量阅读后,我仍然不太了解JS中的术语function objects。从我所读到的,以下是我的解释。如果我错了,请纠正。

function myfunc(x){
 return x;
}

解释myfunc是由JS解释器在内部创建的function object自动,只要声明了myfunc这样的新函数,如上所示。

var myObj = new myfunc();
var mynewObj = new myfunc();

解释myObjmynewObjmyfunc的实例(对象),因此可以说是function objects

我的解释是否正确。函数对象的任何其他示例?

感谢

BT

1 个答案:

答案 0 :(得分:2)

  

解释:myfunc是JS解释器在内部自动创建的函数对象,只要声明了myfunc之类的新函数,如上所示。

几乎,但不完全。 myfunc引用到(指向)JavaScript引擎创建的函数的标识符。 1 该函数是一个对象,因为所有函数都是对象JavaScript的。如果你愿意,你可以把它称为“功能对象”;大多数人会称之为“功能”。 (在JavaScript中,“function”和“function object”是同义词。)

var myObj = new myfunc();
var mynewObj = new myfunc();
     

解释:myObjmynewObjmyfunc的实例(对象),因此可以说是function objects

不,它们不是功能对象。它们只是物体。它们确实是instanceof myfunc,这意味着对象myfunc.prototype指向它们的原型链,但是将它们称为“函数对象”是不正确的,因为它们不是函数。

1 “JavaScript引擎” - 这是我优先使用的术语“JavaScript解释器”,因为任何现代JavaScript引擎都是即时编译器和运行时环境,而不是解释器。这是一个微妙的区别。

在评论中,Jamie Dixon提到了Function功能。它只是一个基于源代码字符串创建函数的函数。在现代JavaScript中几乎没有用例(就像在现代JavaScript中eval几乎没有用例一样)。