经过大量阅读后,我仍然不太了解JS中的术语function objects
。从我所读到的,以下是我的解释。如果我错了,请纠正。
function myfunc(x){
return x;
}
解释:
myfunc
是由JS解释器在内部创建的function object
自动,只要声明了myfunc
这样的新函数,如上所示。
var myObj = new myfunc();
var mynewObj = new myfunc();
解释:myObj
和mynewObj
是myfunc
的实例(对象),因此可以说是function objects
我的解释是否正确。函数对象的任何其他示例?
感谢
BT
答案 0 :(得分:2)
解释:
myfunc
是JS解释器在内部自动创建的函数对象,只要声明了myfunc
之类的新函数,如上所示。
几乎,但不完全。 myfunc
是引用到(指向)JavaScript引擎创建的函数的标识符。 1 该函数是一个对象,因为所有函数都是对象JavaScript的。如果你愿意,你可以把它称为“功能对象”;大多数人会称之为“功能”。 (在JavaScript中,“function”和“function object”是同义词。)
var myObj = new myfunc(); var mynewObj = new myfunc();
解释:
myObj
和mynewObj
是myfunc
的实例(对象),因此可以说是function objects
不,它们不是功能对象。它们只是物体。它们确实是instanceof myfunc
,这意味着对象myfunc.prototype
指向它们的原型链,但是将它们称为“函数对象”是不正确的,因为它们不是函数。
1 “JavaScript引擎” - 这是我优先使用的术语“JavaScript解释器”,因为任何现代JavaScript引擎都是即时编译器和运行时环境,而不是解释器。这是一个微妙的区别。
在评论中,Jamie Dixon提到了Function
功能。它只是一个基于源代码字符串创建函数的函数。在现代JavaScript中几乎没有用例(就像在现代JavaScript中eval
几乎没有用例一样)。