我知道这些函数在JavaScript中被视为对象,并且想知道是否可以实现以下功能。
var foo = function () {
return "bar";
};
foo.baz = "ooga";
如果你打电话给foo(),它将返回" bar",并且调用foo.baz将给出" ooga"。这怎么可能(具有属性的函数),这是一个很好的编程实践吗?
答案 0 :(得分:0)
这是因为在Javascript中,函数IS实际上是一个对象,更具体地说,它是一个"函数对象"。这就是为什么你可以为它分配属性,但是函数对象和经典对象之间的区别在于函数可以执行代码并为其分配属性。
使用示例编辑:
//有效语法
var foo = function() {
return 'hi';
};
//引发控制台错误
var foo = {
bar: return 'hi'
};
与foo()相比,经典的javascript对象无法执行类似return语句的操作,但是你可以分配两个' foos' foo.baz的财产。