javascript 函数作为对象

javascript function as object

我知道函数在 JavaScript 中被视为对象,我想知道这是否使以下内容成为可能。

var foo = function () {
    return "bar";
};

foo.baz = "ooga";

如果调用 foo(),它将 return "bar",调用 foo.baz 将得到 "ooga"。这怎么可能(具有 属性 的函数),这是好的编程习惯吗?

因为在Javascript中函数实际上是一个对象,更具体地说它是一个"Function Object"。这就是您可以为其分配属性的原因,但是函数对象和经典对象之间的区别在于函数可以执行代码并为其分配属性。

用例子编辑:

// 有效语法

var foo = function() {
    return 'hi';
};

// 抛出控制台错误

var foo = {
    bar: return 'hi'
};

经典的 javascript 对象不能执行类似 return 的语句,而 foo() 可以,但是您可以将 'foos' 和 属性 都分配给foo.baz.