我正在努力理解JavaScript函数的行为。它是函数还是对象,还是两者都有?
我正在努力理解JavaScript函数的行为。它是函数还是对象,还是两者都有?
Javascript中的函数是一等对象。因此,它们既是函数也是对象。
由于它们是一等对象,您可以将变量分配给一个函数并为其赋予属性,例如:
var addName=function(){};
addName.blah = 1;
如果它们不是一等对象,你将受到语法的限制,但你可以通过两种方式来实现:
function addName(){}
这是两者都有的。
JavaScript 中的所有内容,包括函数在内,都被视为“数据”。 我认为这是一个好的图像比喻:
var f = function() { alert('foo'); };
这是将一个变量赋值的过程,和你写下以下代码并没有什么区别:
var f = new String('foo');
不管怎样,你可以编写类似于f.bar = 'baz';
的语句来为对象分配属性。唯一的区别在于,如果你拥有的变量恰好是一个函数,那么()
运算符(如果您愿意这么称呼它)才会起作用。如果f()
是一个函数,那么它是有意义的;如果它是一个字符串或其他数据片段,那么f()
就没有意义了。
var f = "foo"; f.bar = 4;
。发生的是,在 f.bar
中的 f
被转换为一个字符串,然后它的 bar
属性被赋值,然后转换后的字符串值会丢失,因为没有任何引用指向它。但是你确实可以这样做 =) - ClaudiuJavaScript中所有的函数都是对象。
函数是可以调用的对象。(它们具有内部[[Call]]属性)
好吧,我不会说“JavaScript函数是一等对象”,因为其他人已经说过了,但如果你想了解更多关于函数的内容,请查看这个简短的页面:
顺便提一句,如果你打算学习JavaScript和JQuery,那有一本免费的在线书籍供你阅读。